視頻教程:Maven保姆級(jí)教程
Maven入門教程(一):安裝Maven環(huán)境
Maven入門教程(二):idea/Eclipse使用Maven
Maven入門教程(三):Maven語(yǔ)法
Maven入門教程(四):Nexus私服
Maven入門教程(五):自定義腳手架
腳手架
視頻教程:
Maven保姆級(jí)教程
腳手架是一個(gè)項(xiàng)目模板,包含常用的工程結(jié)構(gòu)、代碼。
1 自定義腳手架
腳手架創(chuàng)建的步驟如下,先創(chuàng)建一個(gè)工程,把常用的代碼寫(xiě)好,進(jìn)入工程根目錄,進(jìn)行如下操作:
打包模板
mvn archetype:create-from-project進(jìn)入模板目錄,修改文件配置
cd ./target/generated-sources/archetype如果想讓文件中的替換變量生效,需要先修改META-INF.maven/archetype-metadata.xml
將對(duì)應(yīng)目錄或文件增加 filtered=“true”
再使用變量替換對(duì)應(yīng)文件內(nèi)容部署本地
mvn install上傳倉(cāng)庫(kù)
mvn deploy
下面用一個(gè)多模塊的項(xiàng)目做演示,包含xml文件,yml文件,和其他文件。
我們要?jiǎng)?chuàng)建一個(gè)腳手架,使用這個(gè)腳手架創(chuàng)建工程時(shí),xxx要替換成指定值。
在根目錄下創(chuàng)建archetype.properties文件
archetype.groupId=com.test.maven
archetype.artifactId=archetype-test
archetype.version=1.0-SNAPSHOT
excludePatterns=**/.idea/**,**/*.iml
archetype-test(父工程)的pom中加入:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-archetype-plugin</artifactId>
<version>3.2.0</version>
</plugin>
</plugins>
</build>
進(jìn)入項(xiàng)目根目錄,執(zhí)行mvn archetype:create-from-project
執(zhí)行成功后,跟目錄下會(huì)有一個(gè)target文件夾生成
接著要替換占位符,比如每個(gè)項(xiàng)目名字不一樣,xxx要替換成項(xiàng)目名,每個(gè)項(xiàng)目package前綴不一樣,也要替換;
常用占位符如下:
Variable | Meaning |
---|---|
_rootArtifactId_ | 做文件夾名替換用,例如_rootArtifactId_-dao, 占位符來(lái)動(dòng)態(tài)獲取父工程的ArtifactId |
${rootArtifactId} | 它保存用戶輸入的值作為項(xiàng)目名(maven在用戶運(yùn)行原型時(shí)在提示符中詢問(wèn)為artifactid:的值) |
${artifactId} | 如果您的項(xiàng)目由一個(gè)模塊組成,則此變量的值將與${rootArtifactId}相同,但如果項(xiàng)目包含多個(gè)模塊,則此變量將由每個(gè)模塊文件夾中的模塊名替換 |
`${package} | 用戶為項(xiàng)目提供的包,也在用戶運(yùn)行原型時(shí)由maven提示 |
${packageInPathFormat} | 與${package}變量的值相同,但將“.”替換為字符“/”,例如:,對(duì)于包c(diǎn)om.foo.bar,此變量為com/foo/bar |
${groupId} | 用戶為項(xiàng)目提供的groupid,在用戶運(yùn)行原型時(shí)由maven提示 |
${version} | 版本號(hào) |
首先替換module的名字,把xxx替換成_rootArtifactId_,注意兩邊是兩個(gè)下劃線
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-kg2ParTl-1692174116914)(/image-20230815094204095.png)]
接著依次點(diǎn)開(kāi)每一個(gè)編譯后的文件,查看一下有沒(méi)有沒(méi)替換的占位符,正常編譯好的,動(dòng)態(tài)部分都會(huì)替換掉,如下圖:
但是也會(huì)有一些替換錯(cuò)的,有時(shí)候package前綴和groupId一樣時(shí),一些package會(huì)被替換成groupId,我們要手動(dòng)修正它;
當(dāng)前項(xiàng)目里,這個(gè)application.yml就沒(méi)有被替換掉
改成如下形式:
接著是核心文件:archetype-metadata.xml
找到modules節(jié)點(diǎn),每個(gè)modules都要替換,
module
屬性介紹:
?
id
:子模塊工程的artifactId
?
dir
:子模塊工程源文件在archetype-resources
里對(duì)應(yīng)的directory
?
name
:子模塊的名字.,可定制化自己的服務(wù)模塊。
替換成
如果有其他自定義參數(shù),比如項(xiàng)目中的xxx和類名中的Xxx需要替換,可以自定義參數(shù),自定義參數(shù)在archetype-metadata.xml里加入
<requiredProperties>
key是屬性名,defaultValue時(shí)默認(rèn)名
<!--屬性變量定義-->
<requiredProperties>
<requiredProperty key="appName">
<defaultValue>demo</defaultValue>
</requiredProperty>
<requiredProperty key="appNameCap">
<defaultValue>Demo</defaultValue>
</requiredProperty>
</requiredProperties>
去替換文件中的內(nèi)容,路徑中的參數(shù)是雙下劃線_參數(shù)名_,文件內(nèi)部的參數(shù)是${參數(shù)名}
一般xml文件、java文件模板會(huì)自動(dòng)替換占位符,另外有一些自定義文件,模板不會(huì)識(shí)別,比如sh腳本、md文件等,我們以Dockerfile為例(隨便自己定義個(gè)文件也行),在archetype-metadata.xml寫(xiě)
<fileSets>
<fileSets>
<!-- 寫(xiě)進(jìn)模板,但不替換的占位符的,不設(shè)置 filtered="true"即可-->
<!-- 寫(xiě)進(jìn)模板,要替換的占位符的,filtered="true"-->
<fileSet encoding="UTF-8" filtered="true">
<directory></directory>
<includes>
<include>Dockerfile</include>
<include>README.md</include>
</includes>
</fileSet>
</fileSets>
每一個(gè)module下面如果有默認(rèn)不識(shí)別的文件也要單獨(dú)配置:
去替換文件中的內(nèi)容:
注意檢查文件,沒(méi)有遺漏之后可以安裝腳手架了,上面示例只是替換了一些常用文件,并沒(méi)有替換所有,根據(jù)自己需求,替換所有需要編輯的文件。
進(jìn)入target\generated-sources\archetype下,執(zhí)行 mvn install注:如果有自定義參數(shù),需要在test/resources/projects/archetype.properties里配置自定義參數(shù)
執(zhí)行成功后,在我們本地的maven倉(cāng)庫(kù)里會(huì)有一個(gè)archetype-catalog.xml文件
打開(kāi)這個(gè)文件就能看到已經(jīng)安裝的腳手架信息:
2 使用腳手架
2.1 命令
在工作區(qū)里執(zhí)行:mvn archetype:generate -DappName=abc -DappNameCap=Abc
其中-D后面接的時(shí)自定義參數(shù),也可以接默認(rèn)參數(shù),如-DgroupId
如果你安裝過(guò)多個(gè)腳手架,會(huì)提示一個(gè)腳手架列表,選擇腳手架編號(hào):
會(huì)提示我們讓我們輸入各項(xiàng)參數(shù),
確認(rèn)按Y或者回車;
輸入其他字母,重新輸入?yún)?shù);
按ctrl+c終止創(chuàng)建工程
2.2 idea
或者直接用idea
舊版
2.3 Eclipse
項(xiàng)目就創(chuàng)建好了
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-653918.html
刪除腳手架只要?jiǎng)h除archetype-catalog.xml對(duì)應(yīng)的節(jié)點(diǎn)就可以了文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-653918.html
到了這里,關(guān)于Maven自定義腳手架(多module模塊)+自定義參數(shù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!