Maven插件之maven-archetype-plugin

學過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命令行來生成項目骨架。

相關文章
相關標籤/搜索