這里要使用Maven的achetype機制,一個achetype被定義成一個原始的模式或者模型。在Maven里,archetype是一個項目的模板,通過這個模板,再加上一些用戶的輸入就產(chǎn)生了一個可以工作的、符合用戶需要的Maven項目。
下面開始創(chuàng)建第一個項目,執(zhí)行一下命令行:
Mvn archetype:create –DgroupId=com.mycompany.app –DartifactId=my-app
一旦執(zhí)行了以上命令,你會發(fā)現(xiàn)maven為這個新項目創(chuàng)建了一個名為my-app的目錄,同時此目錄中有一個pom.xml文件,文件內(nèi)容如下所示:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0 </modelVersion>
<groupId>com.mycompany.app </groupId>
<artifactId>my-app </artifactId>
<packaging>jar </packaging>
<version>1.0-SNAPSHOT </version>
<name>Maven Quick Start Archetype </name>
<url>http://maven.apache.org </url>
<dependencies>
<dependency>
<groupId>junit </groupId>
<artifactId>junit </artifactId>
<version>3.8.1 </version>
<scope>test </scope>
</dependency>
</dependencies>
</project>
Pom.xml包含項目對象模型(POM)。POM是Maven的基本單元,記住,Maven是以項目為中心的,所有的東西都圍繞項目展開。簡而言之,POM包含項目的所有重要信息,并且本質(zhì)上提供了一站式的項目信息。關于pom的詳細介紹,請參考《POM介紹》。
下面是pom中的一些重要元素:
Ø project:pom.xml文件中的頂層元素;
Ø modelVersion:指明POM使用的對象模型的版本。這個值很少改動。
Ø groupId:指明創(chuàng)建項目的組織或者小組的唯一標識。GroupId是項目的關鍵標識,典型的,此標識以組織的完全限定名來定義。比如,org.apache.maven.plugins是所有Maven插件項目指定的groupId。
Ø
artifactId:指明此項目產(chǎn)生的主要產(chǎn)品的基本名稱。項目的主要產(chǎn)品通常為一個JAR文件。第二,象源代碼包通常使用artifactId作為最
后名稱的一部分。典型的產(chǎn)品名稱使用這個格式: <artifactId>- <version>.
<extension>(比如:myapp-1.0.jar)。
Ø version:項目產(chǎn)品的版本號。Maven幫助你管理版本,可以經(jīng)常看到SNAPSHOT這個版本,表明項目處于開發(fā)階段。
Ø name:項目的顯示名稱,通常用于maven產(chǎn)生的文檔中。
Ø url:指定項目站點,通常用于maven產(chǎn)生的文檔中。
Ø description:描述此項目,通常用于maven產(chǎn)生的文檔中。
POM中所有元素的說明,請參考《POM參考》。
產(chǎn)生了第一個項目的archetype后,你可以發(fā)現(xiàn)maven為你創(chuàng)建了如下的目錄結(jié)構:
my-app
|-- pom.xml
`-- src
|-- main
| `-- java
| `-- com
| `-- mycompany
| `-- app
| `-- App.java
`-- test
`-- java
`-- com
`-- mycompany
`-- app
`-- AppTest.java
從archetype產(chǎn)生的項目有一個POM,一個源代碼樹,以及一個測試代碼樹,這是maven項目的標準布局(應用程序源碼位
于${basedir}/src/main/java,而測試源碼位于${basedir}/src/test/java,這里${basedir}代表
包含pom.xml的根目錄)。