maven archetype 自定義模板工程


  自定義模板工程原理:利用maven插件archetype,將源工程生成為archetype工程,即模板工程,生成模板工程的過程中將指定字符串或文件名替換為占位符,然后將這個模板工程發布到本地倉庫或私服倉庫,就可以在創建工程的時候引用這個模板工程,給占位符賦值,生成新的工程,主要以下三步:

  1,根據源工程生成模板工程:

mvn archetype:create-from-project

  2,發布模板工程:

mvn clean install 或 mvn clean deploy

  3,根據模板工程創建新工程:

archetype:generate -DarchetypeGroupId="..." -archetypeArtifactId="..." -DarchetypeVersion="..."

  具體步驟如下:

一、准備好源工程,在pom.xml里配置archetype插件,指定archetype.properties配置文件,yml文件默認不會替換占位符,需要用archetypeFilteredExtentions標簽配置表示替換,如果還有其它的,用逗號分隔;

二、在源工程根目錄下創建配置文件archetype.properties,根據需要設置屬性,在這里我自定義一個屬性customProperty=Abc;

三、然后在根目錄下運行mvn archetype:create-from-project命令,運行成功后,在target/generated-sources下會生成一個archetype項目,項目內容如下圖。

    1.可以看到包路徑沒有了,這是因為默認有個屬性package=包路徑沒有分支的最深路徑,即在這個項目里package=com.archetypedemo.www如果想自定義,可以在前面的archetype.properties里指定package的值。

    2.原來的Abc.java文件名被替換為__customProperty__.java,aaaAbc.xml被替換為aaa__customProperty__.xml;

    3.文件內容里得Abc字符串全被替換為${customProperty};

    4.archetype-metadata.xml則是配置描述,里面可以看到我們自定義的屬性customProperty,默認值是Abc,可以把defaultValue這個標簽刪掉,后面新建工程的時候自己指定,也可以不刪;

四、在archetype目錄下打開cmd,運行mvn clean install或mvn clean deploy,發布到本地或私服,發布到私服需要在archetype的pom里添加私服deploy配置,配置方法自行度娘,發布成功后,則可以根據這個發布的GAV創建新工程了,發布后得模板工程GAV可以在archetype工程的pom.xml里查看,也可以在發布時的打印信息里看到;

五、在需要創建新工程的目錄下打開cmd,運行archetype:generate -DarchetypeGroupId="..." -archetypeArtifactId="..." -DarchetypeVersion="...",省略號是模板工程的GAV,然后會要求我們輸入GAV和自定義屬性的值,最后確認回車,就會生成新的工程。如果自定義屬性在第三步的archetype-metadata.xml中設置了默認值,這里會直接設置成默認值跳過輸入,如果想修改的話,可以在最后確認的那一步,輸入N回車,則會讓我們重新輸入所有屬性值。

    分別輸入值,由於之前archetype-metadata.xml里沒有把customProperty的默認值刪掉,這里直接賦值為Abc跳過了,想要修改的話,在最后一步Y確認的地方輸N拒絕,則重新輸入所有字段的值;

 

    最后看我們生成的工程,模板工程的占位符都已替換為我們創建工程時指定的值了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM