如何用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:\IntelliJ\maven-project\NumberGenerator>java -cp target/NumberGenerator-1.0-SNAPSHOT.jar com.yanyd.App
2 Unique Id:47193d77-ec6f-4e95-aa94-337592f6824d
3 
4 D:\IntelliJ\maven-project\NumberGenerator>java -cp target/NumberGenerator-1.0-SNAPSHOT.jar com.yanyd.App
5 Unique Id:b6c85811-e81f-4a50-82b8-afbc59bbf265
6 
7 D:\IntelliJ\maven-project\NumberGenerator>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM