學過Maven的人,都知道用MyEclipse的Maven插件生成一個項目骨架,好比maven-archetype-quickstart,這個原型就是最經常使用的之一。java
剛開始使用骨架的時候,感受很好,減小了重複勞動,提升了開發效率。使用的時間久了,就會發現,Maven Archetype提供的項目骨架不能百分百的知足公司規定的項目結構,難免要手動改些東西。apache
此時,天然而然的就會想到:若是能將公司(或項目組)規定的項目結構做爲一個骨架原型上傳個私服,做爲模版供項目使用,就無須修改任何的文件。也減小了項目環境搭建時間、下降了出錯率等。maven
實際應用中,項目組(或者部門/公司)會有本身的私服,所以如下的介紹前提條件是配有本身的私服。ui
第一步:選擇模版項目,生成原型。spa
選擇生成Archetype的模板項目,運行命令:mvn clean archetype:create-from-project插件
命令參數可參考命令行
但實際應用中,模板項目選好後,通常無須指定任何參數。orm
此時項目的Archetype已經生成,位於${basedir}/target/generated-sources/archetype/目錄下。ip
第二步:將Archetype上傳到私服,共享給其餘人使用(須要有deploy權限和scm配置)。開發
到${basedir}/target/generated-sources/archetype/目錄下執行命令:mvn deploy
將該原型上傳到私服,此時前期工做完成,之後可使用該原型生成項目骨架。
第三步:使用Archetype生成項目骨架。
任意目錄下,執行命令:
mvn archetype:generate
-DinteractiveMode=false
-DarchetypeCatalog=internal,remote
-DarchetypeRepository=
-DarchetypeGroupId=com.ktr
-DarchetypeArtifactId=java-project-template-archetype
-DarchetypeVersion=1.1-SNAPSHOT
-DgroupId=com.ktr
-DartifactId=ktr-t
-Dversion=0.1-SNAPSHOT
-Dgoals=compile
(命令應該在一行,爲了方便查看,故分開多行)
命令參數的詳細說明:
interactiveMode:交互模式,默認爲true,在交互模式下運行命令,要求用戶指定選用的原型,以及生成項目模版的groupId、artifactId、version、package等屬性,不然執行失敗;
archetypeCatalog:Archetype查找規則;
archetypeRepository:倉庫URL地址;不指定,則默認從中央庫查找;
archetypeGroupId:原型的groupId;默認值爲org.apache.maven.archetypes;
archetypeArtifactId:原型的artifactId;默認值爲maven-archetype-quickstart;
archetypeVersion:原型的version;默認值爲1.0;
若是interactiveMode屬性設置爲false(或使用Maven參數-B),則爲批處理模式。此時須要指定以下參數
groupId:生成項目的groupId;必選;
artifactId:生成項目的artifactId;必選;
version:生成項目的version;默認值1.0-SNAPSHOT;
package:生成項目的源碼包結構;默認值使用${groupId};
basedir:項目生成的目錄;默認值爲當前目錄;
此時,第三步的命令可簡化爲:
mvn archetype:generate
-DinteractiveMode=false
-DarchetypeGroupId=com.ktr
-DarchetypeArtifactId=java-project-template-archetype
-DarchetypeVersion=1.1-SNAPSHOT
-DgroupId=com.ktr
-DartifactId=ktr-t
補充說明:
經過MyEclipse的Maven插件生成項目骨架時,其直接鏈接中央庫,沒法鏈接私服,所以不能使用自定義的項目原型,而應該使用Maven命令行來生成項目骨架。