[java][maven] maven初探

posted in: Java, maven | 0

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

http://stand.spree.de/wiki_details_maven_archetypes

Leave a Reply

Your email address will not be published. Required fields are marked *