• 如何用Maven创建一个普通Java项目


    一下内容包括:用Maven创建一个普通Java项目,并把该项目转成IDEA项目,导入到IDEA,最后把这个项目打包成一个jar文件。

    有时候运行mvn命令失败,重复运行几次就OK了,无解(可能因为网络问题,一些文件没下载到,搭建私服后就不会了)。

    1、用Maven模板创建一个项目

    打开控制台,进入到想要创建项目的目录,然后运行如下命令,参数自由填写:

    1 mvn archetype:generate -DgroupId={project-packaging} 
    2    -DartifactId={project-name} 
    3    -DarchetypeArtifactId=maven-archetype-quickstart 
    4    -DinteractiveMode=false

    参数说明:

      1.1、-DgroupId:包名,如:com.google

      1.2、-DartifactId: 项目名称,如:NumberGenerator

      1.3、-DarchetypeArtifactId: 项目的类型,Maven提供了很多模板,如果你没写这个,创建的时候就会列出一大堆模板让你选择

      1.4、-DinteractiveMode: 是否使用交互模式,如果是true,那么在创建过程中就要手动输入一些参数

    一个实际例子:

    1 mvn archetype:generate -DgroupId=com.mkyong -DartifactId=NumberGenerator 
    2     -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

    在上面的例子中,Maven会创建一个名为"NumberGenerator"的项目,并把项目的目录结构自动创建好,如果你的命令执行失败了,那就手动创建吧。

    2、项目结构

    使用mvn archetype:generate + maven-archetype-quickstart模板创建出来的项目结构如下:

     1 NumberGenerator
     2    |-src
     3    |---main
     4    |-----java
     5    |-------com
     6    |---------mkyong
     7    |-----------App.java
     8    |---test
     9    |-----java
    10    |-------com
    11    |---------mkyong
    12    |-----------AppTest.java
    13    |-pom.xml

    所有源代码放在/src/main/java/目录里,所有测试代码放在/src/test/java/目录里。

    除此之外还会生成一个标准的pom.xml文件,里面描述了整个项目的信息,所有信息都是从目录结构里来的,包括项目插件、依赖关系以及如何编译项目等等,里面内容如下,具体查看official POM guide.。

     1 <project xmlns="http://maven.apache.org/POM/4.0.0" 
     2     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     3       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
     4     http://maven.apache.org/maven-v4_0_0.xsd">
     5   <modelVersion>4.0.0</modelVersion>
     6   <groupId>com.mkyong</groupId>
     7   <artifactId>NumberGenerator</artifactId>
     8   <packaging>jar</packaging>
     9   <version>1.0-SNAPSHOT</version>
    10   <name>NumberGenerator</name>
    11   <url>http://maven.apache.org</url>
    12   <dependencies>
    13     <dependency>
    14       <groupId>junit</groupId>
    15       <artifactId>junit</artifactId>
    16       <version>3.8.1</version>
    17       <scope>test</scope>
    18     </dependency>
    19   </dependencies>
    20 </project>

    3、IDEA IDE

    要把这个项目转成IDEA项目,要进入到"NumberGenerator"目录,然后运行如下命令,Maven将会生成IEAD所需的所有文件:

    1 mvn idea:idea -DjdkName=1.7

    此处的JDK版本一定要写,我没写时运行就出错了(可能因为网络问题,一些文件没下载到,搭建私服后就不会了)JDK版本可通过运行 java -version 获得。mvn idea:idea 命令详解:http://maven.apache.org/plugins/maven-idea-plugin/usage.html

    导入后如下图所示:

    4、更新pom.xml文件

    默认的pom.xml文件太简单了,大多数时候你需要添加编译插件,告诉Maven用哪个JDK版本来编译你的项目(默认是1.4,太旧了)。

     1 <plugin>
     2     <groupId>org.apache.maven.plugins</groupId>
     3     <artifactId>maven-compiler-plugin</artifactId>
     4     <version>2.3.2</version>
     5     <configuration>
     6         <!--指定JDK版本-->
     7         <source>1.7</source>
     8         <target>1.7</target>
     9     </configuration>
    10 </plugin>

    把jUnit升级到4.11版本:

    1 <dependency>
    2     <groupId>junit</groupId>
    3     <artifactId>junit</artifactId>
    4     <version>4.11</version>
    5     <scope>test</scope>
    6 </dependency>

    上面的代码片段叫做"Maven Coordinate",你需要自己到Maven中心仓库查找所需的"Maven Coordinate"。

    完整的pom.xml:

     1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     2   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
     3   <modelVersion>4.0.0</modelVersion>
     4   <groupId>com.yanyd</groupId>
     5   <artifactId>NumberGenerator</artifactId>
     6   <packaging>jar</packaging>
     7   <version>1.0-SNAPSHOT</version>
     8   <name>NumberGenerator</name>
     9   <url>http://maven.apache.org</url>
    10   <dependencies>
    11     <dependency>
    12       <groupId>junit</groupId>
    13       <artifactId>junit</artifactId>
    14       <version>4.11</version>
    15       <scope>test</scope>
    16     </dependency>
    17   </dependencies>
    18   <build>
    19       <plugins>
    20           <plugin>
    21               <groupId>org.apache.maven.plugins</groupId>
    22               <artifactId>maven-compiler-plugin</artifactId>
    23               <version>2.3.2</version>
    24               <configuration>
    25                   <!--JDK版本-->
    26                   <source>1.7</source>
    27                   <target>1.7</target>
    28               </configuration>
    29           </plugin>
    30       </plugins>
    31   </build>
    32 </project>

    在命令行再次输入命令:mvn idea:idea -DjdkName=1.7,Maven将会自动下载编译插件并自动升级jUnit的版本,并把依赖包放到本地仓库里。

    5、更新业务逻辑

    根据驱动测试开发(TDD),先修改单元测试案例,首先要确保App对象有一个方法能够生成一个独一无二的36位字符串。

    App.java:

     1 package com.yanyd;
     2  
     3 import java.util.UUID;
     4  
     5 /**
     6  * Generate a unique number
     7  *
     8  */
     9 public class App 
    10 {
    11  
    12     public static void main( String[] args )
    13     {
    14         App obj = new App();
    15         System.out.println("Unique ID : " + obj.generateUniqueKey());
    16     }
    17  
    18     public String generateUniqueKey(){
    19  
    20         String id = UUID.randomUUID().toString();
    21         return id;
    22  
    23     }
    24 }

    TestApp.java:

     1 package com.yanyd;
     2  
     3 import org.junit.Assert;
     4 import org.junit.Test;
     5  
     6 public class AppTest {
     7  
     8     @Test
     9     public void testLengthOfTheUniqueKey() {
    10  
    11         App obj = new App();
    12         Assert.assertEquals(36, obj.generateUniqueKey().length());
    13  
    14     }
    15 }

    6、使用Maven打包

    现在我们使用Maven编译项目并打包成一个jar文件,打包成什么格式的文件,是通过pom.xml里的packaging标签定义的。

    在控制台里输入打包命令:mvn package,Maven就会开始编译项目,运行里面的单元测试,通过测试后就会把项目打包成一个jar文件放在project/target目录里。

    由于target目录不会显示在IntelliJ IDEA 里,所以只能到文件浏览器里查看了,最终的项目目录结构如下:

     

    7、运行项目

    通过jar文件来运行这个App例子,在控制台输入如下命令,即可运行程序:

    1 D:IntelliJmaven-projectNumberGenerator>java -cp target/NumberGenerator-1.0-SNAPSHOT.jar com.yanyd.App
    2 Unique Id:47193d77-ec6f-4e95-aa94-337592f6824d
    3 
    4 D:IntelliJmaven-projectNumberGenerator>java -cp target/NumberGenerator-1.0-SNAPSHOT.jar com.yanyd.App
    5 Unique Id:b6c85811-e81f-4a50-82b8-afbc59bbf265
    6 
    7 D:IntelliJmaven-projectNumberGenerator>
  • 相关阅读:
    个人冲刺(八)
    记账本典型用户和使用场景分析
    第九周进度总结
    个人冲刺(七)
    解密微信sqlite数据库
    读取文件内容时,显示的内容明显少于文本长度
    sqlcipher 数据库解密
    Win7系统的虚拟机中安装win7系统
    NSIS笔记
    vector list map set等容器某些函数的使用区别
  • 原文地址:https://www.cnblogs.com/yanyd/p/4263008.html
Copyright © 2020-2023  润新知