1. 程式人生 > >Apache Maven專案提供的Archetype外掛詳解

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,

命令預設從http://cocoon.apache.org/archetype-catalog.xml中選擇可以模板。

3.Archetype外掛中的其他goal

此外,Archetype外掛還為其maven-archetype打包配置提供了3個goal,這3個goal可以繫結到Maven內建的生命週期階段,在執行對應的生命週期階段時連帶執行:

  • 繫結到package階段,用於構建archetype jar artifact
  • 繫結到integration-test階段,用於執行archetype integration tests
上述3個goal不能直接被執行,如果要執行,需要在POM中進行如下配置(以Archetype外掛2.4為例):
  <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/