天天看點

Maven實戰. 3.5使用Archetype生成項目骨架

<b>3.5使用archetype生成項目骨架</b>

hello world項目中有一些maven的約定:在項目的根目錄中放置pom.xml,在src/main/java目錄中放置項目的主代碼,在src/test/java中放置項目的測試代碼。之是以一步一步地展示這些步驟,是為了能讓可能是maven初學者的你得到最實際的感受。我們稱這些基本的目錄結構和pom.xml檔案内容稱為項目的骨架,當第一次建立項目骨架的時候,你還會饒有興趣地去體會這些預設約定背後的思想,第二次,第三次,你也許還會滿意自己的熟練程度,但第四、第五次做同樣的事情,你可能就會惱火了。為此maven提供了archetype以幫助我們快速勾勒出項目骨架。

還是以hello world為例,我們使用maven archetype來建立該項目的骨架,離開目前的maven項目目錄。

如果是maven 3,簡單地運作:mvn archetype:generate如果是maven 2,最好運作如下指令:mvn org.apache.maven.plugins:mavenarchetypeplugin:2.0alpha5:generate很多資料會讓你直接使用更為簡單的 mvn archetype:generate 指令,但在maven 2中這是不安全的,因為該指令沒有指定archetype插件的版本,于是maven會自動去下載下傳最新的版本,進而可能得到不穩定的snapshot版本,導緻運作失敗。然而在maven 3中,即使使用者沒有指定版本,maven也隻會解析最新的穩定版本,是以這是安全的。具體内容見7.7節。

我們實際上是在運作插件mavenarchetypeplugin,注意冒号的分隔,其格式為

groupid:artifactid:version:goal,org.apache.maven.plugins

是maven官方插件的groupid,mavenarchetypeplugin

是archetype插件的artifactid,2.0alpha5 是目前該插件最新的穩定版,generate是要使用的插件目标。

緊接着會看到一段長長的輸出,有很多可用的archetype供選擇,包括著名的appfuse項目的archetype、jpa項目的archetype等。每一個archetype前面都會對應有一個編号,同時指令行會提示一個預設的編号,其對應的archetype為mavenarchetypequickstart,直接回車以選擇該archetype,緊接着maven會提示輸入要建立項目的groupid、artifactid、version以及包名package。如下輸入并确認:define value for groupid: :

com.juvenxu.mvnbook

define value for artifactid: : helloworld

define value for version:  1.0snapshot: :

define value for package:  com.juvenxu.mvnbook: : com.juvenxu.mvnbook.helloworld

confirm properties configuration:

groupid: com.juvenxu.mvnbook

artifactid: helloworld

version: 1.0snapshot

package: com.juvenxu.mvnbook.helloworld

y: : yarchetype插件将根據我們提供的資訊建立項目骨架。在目前目錄下,archetype插件會建立一個名為helloworld(我們定義的artifactid)的子目錄,從中可以看到項目的基本結構:基本的pom.xml已經被建立,裡面包含了必要的資訊以及一個junit依賴;主代碼目錄src/main/java已經被建立,在該目錄下還有一個java類com.juvenxu.mvnbook.helloworld.app,注意這裡使用到了剛才定義的包名,而這個類也僅僅隻有一個簡單的輸出hello world!的main方法;測試代碼目錄src/test/java也被建立好了,并且包含了一個測試用例com.juvenxu.mvnbook.helloworld.apptest。

archetype可以幫助我們迅速地建構起項目的骨架,在前面的例子中,我們完全可以在archetype生成的骨架的基礎上開發hello world項目以節省大量時間。

此外,這裡僅僅是看到了一個最簡單的archetype,如果有很多項目擁有類似的自定義項目結構以及配置檔案,則完全可以一勞永逸地開發自己的archetype,然後在這些項目中使用自定義的archetype來快速生成項目骨架。本書後面的章節會詳細闡述如何開發maven archetype。