maven跟ant除了管理的層次不同之外,二個工具的差異點在於前者會提供一組預設的編譯行為及生命週期,後者則是任何步驟都需要指明。
maven預設的各種編譯參數如下:
${basedir}:pom.xml所在地,也就是執行mvn install的地方
source code:位於 ${basedir}/src/main/java
resource: 位於${basedir}/src/main/resources
test: ${basedir}/src/test
預設產出檔:.jar
byte code: ${basedir}/target/classes
jar檔產出後位子:${basedir}/target
若使用ant,上面的資訊都需要指明後才能夠編譯。
當然,在maven中上面的資訊都能夠根據專案而客製化。
在整體的功能上,maven並不僅僅只是對於make、ant之類build tool的改進而已,有更大的一部份功能是在於『Project 』的管理功能。其主要分為以下幾類:
1.Dependency Manager:有Transitive Dependencies的功能
2.Remote Repositories
3.Universal Reuse of Build Logic
4.Tool Portability / Integration
5.Easy Searching and Filtering of Project Artifacts
另外比較值得提到的一點是Maven可以利用以前所寫的Ant script來對專案做建置的工作,也就是說,Maven其實是Ant的超集。
創立第一個maven project:
cd c:\workspace
mvn archetype:create -DgroupId=com.horizon.mvn -DartifactId=horizon
之後在workspace目錄下就會建立一個horizon目錄,內容遵循著maven預設的格式
另外一個產生法:
mvn archetype:generate -DgroudId=com.horizon.mvn2 -DartifactId=horizon2 -Dpackage=com.horizon.mvn2 -Dversion=1.0-SNAPSHOT
之後在有pom.xml處下以下指令即可開始建置:
mvn install (等同於:mvn resources:resources compiler:compile resources:testResources compiler:testCompile surefire:test jar:jar install:install)
運行jar中的App class 印出Hello World!:
java -cp target/horizon-1.0-SNAPSHOT.jar com.horizon.mvn.App
查看包含parent pom.xml的完整專案設定:mvn help:effective-pom
下面指令產生android專案:
mvn archetype:generate -DarchetypeArtifactId=android-quickstart -DarchetypeGroupId=de.akquinet.android.archetypes -DarchetypeVersion=1.0.8 -DgroupId=your.company -DartifactId=my-android-application
參考:
http://www.sonatype.com/books/mvnref-book/reference/public-book.html
Leave a Reply