Maven– HelloWorld實例


Maven– HelloWorld實例

maven安裝好后,可以通過HelloWorld項目來體驗一下maven是如何構建項目的。Maven項目的核心是pom.xml(就像Ant的build.xml一樣),用來構建和發布項目。我們所說的建立maven項目,其實就是建立java項目或web項目,和普通項目不同的是,maven項目的工程目錄結構需要按照maven的標准進行建立,並且帶有pom.xml文件,這樣才能利用maven命令構建和發布工程。

 

下面利用maven Archetype來創建Helloword項目的框架,方法如下:

進入cmd窗口,切換到工程所在位置,例如,我將把工程建立在”E:\maven-code\helloworld”目錄中,如下圖所示:

2013-10-11 11-11-17

輸入

1
mvn archetype:generate

回車,等待一段時間,看到很多的輸出項,是mvn在下載archetype運行相關的文件,運行完畢后,首選選擇建立框架的類型(標准工程、web工程等),命令行里提示一個默認編號308,表示maven-archetype-quickstart,建立一個簡單的maven工程,還可以輸入其他編號,選擇不同的工程框架。這里默認選擇308,回車即可。

2013-10-11 11-23-35

選擇默認6,回車,命令行提示輸入groupId、artifactId、version和package信息,下面我們依次輸入,並確認:

2013-10-11 11-30-55

輸入groupId、artifactId、version、package如下:

  • 輸入groupId,項目組id,以rockcms項目為例,com.originsoft.rockcms(項目域名倒序)
1
Define value for property 'groupId': : com.originsoft.rockcms
  • 輸入artifactId,項目組中的唯一id,為這個Helloworld項目定義為hello-world
1
Define value for property 'artifactId': : hello-world
  • 輸入version,版本號,這里默認為1.0快照,回車即可
1
Define value for property 'version': 1.0-SNAPSHOT: :
  • 輸入package,包名,即java項目的包路徑,默認為groupid,默認回車即可
1
Define value for property 'package': com.originsoft.rockcms: :

輸出:

1
2
3
4
5
Confirm properties configuration:
groupId: com.originsoft.rockcms
artifactId: hello-world
version: 1.0-SNAPSHOT
package: com.originsoft.rockcms

輸入Y::回車,提示BUILD SUCCESS,表示建立成功,如下圖所示:

2013-10-11 11-34-25

構建完成后,我們就會在E:\maven-code\helloworld下看到hello-world工程(以artifactId命名的工程)。hello-world項目即為典型的maven項目,其規則為,pom.xml在項目的根目錄下,src/main/java目錄中為項目的主代碼,src/test/java目錄中為項目的測試代碼。

在編寫helloworld之前,我們需要了解一下pom.xml,

 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/xsd/maven-4.0.0.xsd">
 5 
 6       <modelVersion>4.0.0</modelVersion>
 7       <groupId>com.originsoft.rockcms</groupId>
 8       <artifactId>hello-world</artifactId>
 9       <version>1.0-SNAPSHOT</version>
10       <packaging>jar</packaging>
11       <name>hello-world</name>
12       <url>http://maven.apache.org</url>
13       <properties>
14             <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
15       </properties>
16 
17       <dependencies>
18             <dependency>
19                   <groupId>junit</groupId>
20                   <artifactId>junit</artifactId>
21                   <version>4.11</version>
22                   <scope>test</scope>
23             </dependency>
24       </dependencies>
25 </project>

 

archetype生成的框架之中,自動帶有junit測試依賴。groupId、artifactId、version為我們在之前輸入的內容。packaging標簽內容為jar,表示當前項目的輸出方式,默認為jar。junit默認版本為3.8.1(修改為4.11版本)。pom.xml具體標簽不再詳細說明,后續也都是用到的進行說明。

框架會自帶一個主代碼和測試代碼App.java和AppTest.java。執行maven的install命令,則可以完成helloworld項目的構建,編譯App類,測試App等,具體方法如下:

進入cmd窗口,切換到hello-world工程中pom.xml所在目錄(例如:E:\maven-code\helloworld\hello-world),輸入mvn clean install命令,mven開始構建helloworld工程。

2013-10-11 14-58-18

提示測試成功

2013-10-11 14-27-01

提示構建成功

2013-10-11 14-27-38

構建過程,包括清空target目錄,編譯主代碼、編譯測試代碼、執行測試代碼、打包等過程(不做詳細分析,可以了解一下maven的生命周期)。構建完成后,我們會在D:\eclipseworkspace\rockcms\helloworl目錄中看到target目錄,target目錄中為構建后的目標結果,包括生成的jar包,以及編譯后的class、測試報告(surefile-reports)等,如下圖所示:

2013-10-11 14-36-29

經過以上方法,我們完成了helloworld的構建,利用maven我們可以很方便完成持續構建,編譯、測試一體化進行,不需要分開,便於我們每日構建和打jar包。

也許你會問,當前工程下沒有junit4.11的jar包呀,maven是如何編譯並測試成功的呢?其實maven是到我們本地的倉庫中找到junit4.11的jar包並應用的。當我們利用archetype生成框架時,maven就已經從遠程的中央服務器上下載了junit4.11的jar包,並把它保存到本地倉庫中,本地倉庫位置“C:\Users\april\.m2\repository”(在“C:\Users\april\”目錄下生成“.m2”本地化創庫目錄(win7系統的用戶目錄,april為用戶名))。

我們只需在pom.xml中配置了項目所需要依賴的jar,maven在執行構建命令時(mvn clean install),就會自動到遠程中心服務器上下載我們配置的jar,並進行編譯,這一點是比較方便的,可以很清晰的看出當前工程都應用了那些jar文件。舉個例子,我把pom.xml中junit的版本好改為4.11,AppTest.java改為junit4.11的形式,然后再次執行mvn clean install,命令行中可以看到下載junit4.11的信息。

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

構建成功后,我們可以在C:\Users\april\.m2\repository下看到junit\junit\4.11 目錄。

2013-10-11 15-40-08


免責聲明!

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



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