Apache Maven專案提供的Archetype外掛詳解
Archetype外掛是Apache Maven專案提供的一個工具類的通用外掛。
Archetype外掛可以基於已有的模板建立一個Maven專案,開發人員可以在此基礎上進行擴充套件開發。在這裡,專案模板就被稱為archetype。
Archetype外掛也可以基於已有的一個Maven專案建立模板。
Archetype外掛的最新版本是2015.8釋出的2.4。
1.Archetype外掛提供的4個可以直接使用的goal
2.Archetype外掛中的模板Archetype外掛中提供了大量的模板,直接執行mvn archetype:generate命令,你可以看到大量模板一閃而過。那麼如何在大量模板中選擇合適的模板呢?1)通過關鍵字過濾模板
例如,對於mvn archetype:generate -Dfilter=org.apache:struts,命令表示從groupId包含"org.apache"、且artifactId包含"struts"的模板中選擇。
2)選擇指定型別的模板
Archetype外掛為模板提供了分類如下:
- remote,遠端Maven庫中提供的模板。mvn archetype:generate預設使用該類模板
- local,本地Maven庫中提供的模板。mvn archetype:generate預設使用該類模板,作為remote的補充。Maven初始為空,執行mvn
install時會將當前專案加入local模板庫
- internal,Apache Maven專案預設提供的模板。mvn archetype:generate -DarchetypeCatalog=internal使用該類模板
- file://...,給出本地計算機上的一個路徑,在該路徑下有一個archetype-catalog.xml檔案(如果是其他檔名則必須給出),其中配置了模板
- http://...,給出網路上的一個路徑,在該路徑下有一個archetype-catalog.xml檔案(如果是其他檔名則必須給出),其中配置了模板
例如,對於mvn archetype:generate -DarchetypeCatalog=http://cocoon.apache.org,
3.Archetype外掛中的其他goal
此外,Archetype外掛還為其maven-archetype打包配置提供了3個goal,這3個goal可以繫結到Maven內建的生命週期階段,在執行對應的生命週期階段時連帶執行:
- ,繫結到package階段,用於構建archetype jar artifact
- ,繫結到integration-test階段,用於執行archetype integration tests
<build>
<extensions>
<extension>
<groupId>org.apache.maven.archetype</groupId>
<artifactId>archetype-packaging</artifactId>
<version>2.4</version>
</extension>
</extensions>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-archetype-plugin</artifactId>
<version>2.4</version>
</plugin>
</plugins>
</pluginManagement>
</build>
4.Archetype外掛generate的基本用法
Archetype外掛基於模板建立一個Maven專案的步驟如下:
- 選擇所需的模板
一個外掛中可以包含多個模板,每個模板都有唯一的名字。如果知道模板的準確名字可以在mvn命令中以archetypeArtifactId引數給出,否則根據mvn命令的提示進行選擇。
- 配置模板的必要引數
引數其實就是配置生成的Maven專案的資訊。一個Maven專案,至少應該包含如下資訊,這些資訊就是建立Maven專案時必須為模板提供的引數:
- groupId,類似於package
- artifactId,必須唯一
- version,預設值為1.0-SNAPSHOT
注意:Maven外掛本身也包含如上資訊,但是區別於Maven專案的資訊。
- 執行以建立新Maven專案
Archetype外掛建立Maven專案的基本用法是直接執行mvn archetype:generate,這是以互動的模式進行,mvn會提示使用者選擇模板(通過編號選擇),輸入選擇的模板後,mvn會陸續提示輸入必要的groupId和artifactId,versioin可以採用預設值1.0-SNAPSHOT。
補充,Archetype外掛2.4預設提供的internal型別的模板(共10個)如下圖所示:
通過這些模板就足以建立滿足常見基本需求的的Maven專案框架。
例如,mvn archetype:generate -DarchetypeArtifactId=maven-archetype-webapp命令就可以建立一個Web應用。
參考文獻:
http://maven.apache.org/archetype/maven-archetype-plugin/