archetype-catalog.xml能夠提供Archetype的信息,那麼maven-archetype-plugin可以從哪些位置讀取archetype-catalog.xml文件呢?下面是一個列表:
·internal:這是maven-archetype-plugin內置的Archetype Catalog,包含了約58個Archetype信息。
·local:指向用戶本地的Archetype Catalog,其位置為~/.m2/archetype-catalog.xml。需要注意的是,該文件默認是不存在的。
·remote:指向了Maven中央倉庫的Archetype Catalog,其確切的地址為http://repo1.maven.org/maven2/archetype-Catalog.xml。在本書編寫的時候,該Catalog包含了約249個Archetype信息。
·file://...:用戶可以指定本機任何位置的archetype-catalog.xml文件。
·http://...:用戶可以使用HTTP協議指定遠程的archetype-catalog.xml文件。
當用戶運行mvn archetype:generate命令的時候,可以使用archetypeCatalog參數指定插件使用的Catalog。例如:
上述命令指定Archetype插件使用系統/tmp目錄下的archetype-catalog.xml文件。當然,用戶不需要每次運行Archetype目標的時候都去指定Catalog。在maven-archetype-plugin 2.0-beta-4之前的版本中,archetypeCatalog的默認值為「internal,local」,即默認使用插件內置加上用戶本機的Catalog信息,而從maven-archetype-plugin 2.0-beta-5開始,這一默認值變成了「remote,local」,即默認使用中央倉庫加上用戶本機的Catalog信息。用戶也可以使用逗號分隔多個Catalog來源。例如:
該命令指定Archetype從兩個位置讀取Catalog信息。
archetype:generate的輸出也會告訴用戶每一條Archetype信息的來源。例如:
上述輸出片段告訴用戶,archetype 1-4來源於本機的~/.m2/archetype-catalog.xml文件,而archetype 5-9來源於Archetype插件內置的archetype-catalog.xml文件。