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”目錄中,如下圖所示:
輸入
1
|
mvn archetype:generate
|
回車,等待一段時間,看到很多的輸出項,是mvn在下載archetype運行相關的文件,運行完畢后,首選選擇建立框架的類型(標准工程、web工程等),命令行里提示一個默認編號308,表示maven-archetype-quickstart,建立一個簡單的maven工程,還可以輸入其他編號,選擇不同的工程框架。這里默認選擇308,回車即可。
選擇默認6,回車,命令行提示輸入groupId、artifactId、version和package信息,下面我們依次輸入,並確認:
輸入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,表示建立成功,如下圖所示:
構建完成后,我們就會在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>
框架會自帶一個主代碼和測試代碼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工程。
提示測試成功
提示構建成功
構建過程,包括清空target目錄,編譯主代碼、編譯測試代碼、執行測試代碼、打包等過程(不做詳細分析,可以了解一下maven的生命周期)。構建完成后,我們會在D:\eclipseworkspace\rockcms\helloworl目錄中看到target目錄,target目錄中為構建后的目標結果,包括生成的jar包,以及編譯后的class、測試報告(surefile-reports)等,如下圖所示:
經過以上方法,我們完成了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 目錄。