Java Maven高級(jí)之插件開(kāi)發(fā)詳解
前言
終于來(lái)到了Maven的插件開(kāi)發(fā),其實(shí)Maven的插件并沒(méi)有想象的那么難,剛開(kāi)始講Maven基礎(chǔ)的時(shí)候就演示了一下JDK是如何打包的,Maven打包只是在JDK打包上封裝了一層而已,Maven也支持自定義插件開(kāi)發(fā)
創(chuàng)建
我們先使用quickstart原型創(chuàng)建出一個(gè)Maven項(xiàng)目,在pom.xml里面引入一下依賴(lài):
<dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-plugin-api</artifactId> <scope>provided</scope> <version>3.0</version> </dependency> <dependency> <groupId>org.apache.maven.plugin-tools</groupId> <artifactId>maven-plugin-annotations</artifactId> <version>3.4</version> <scope>provided</scope> </dependency>
添加好依賴(lài)后,需修改packaging打包方式:
<packaging>maven-plugin</packaging>
之前也講過(guò)packaging有哪幾種方式,大家可以各自去在下的上篇博客看看
自定義插件
先創(chuàng)建一個(gè)類(lèi)CleanTestPlugin,繼承AbstractMojo,這個(gè)抽象類(lèi)是Maven插件開(kāi)發(fā)需實(shí)現(xiàn)的一個(gè)類(lèi),然后實(shí)現(xiàn)里面的execute方法
然后打包并且安裝到本地倉(cāng)庫(kù)上(命令:mvn clean install)
安裝好后,可以在命令行中輸入:
就能看到打印的日志了。
如果想要在插件中打包時(shí)傳入?yún)?shù),也是可以支持,這里就寫(xiě)出幾個(gè)示例:
然后在其他項(xiàng)目引入改插件的時(shí)候,綁定好參數(shù)即可
由于只綁定了clean的生命周期,所以只需執(zhí)行mvn clean即可
總結(jié)
自定義插件基本結(jié)束啦,下篇講講Maven原型(archetype)吧。
是不是看完后,感覺(jué)沒(méi)啥難的,現(xiàn)在回過(guò)頭來(lái)看一下Maven自帶的maven-jar-plugin插件,其實(shí)沒(méi)有想象中那么難,只是結(jié)構(gòu)比較復(fù)雜。
看完這個(gè)之后,大家也可以去看一下SpringBoot的插件源代碼,這個(gè)插件就開(kāi)發(fā)的比較厲害了,如果比較細(xì)心的任就會(huì)發(fā)現(xiàn),使用這個(gè)插件打包出來(lái)的可執(zhí)行包,執(zhí)行的類(lèi)并不是執(zhí)行的類(lèi),而是通過(guò)SpringBoot同一的啟動(dòng)類(lèi)去啟動(dòng) 。
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Java輸入學(xué)號(hào)、姓名、年齡并對(duì)其進(jìn)行輸出的實(shí)現(xiàn)方法
這篇文章主要給大家介紹了關(guān)于Java輸入學(xué)號(hào)、姓名、年齡并對(duì)其進(jìn)行輸出的實(shí)現(xiàn)方法,在計(jì)算機(jī)編程中,輸出學(xué)號(hào)和姓名是一個(gè)常見(jiàn)的任務(wù),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09一篇文章帶你入門(mén)java算術(shù)運(yùn)算符(加減乘除余,字符連接)
這篇文章主要介紹了Java基本數(shù)據(jù)類(lèi)型和運(yùn)算符,結(jié)合實(shí)例形式詳細(xì)分析了java基本數(shù)據(jù)類(lèi)型、數(shù)據(jù)類(lèi)型轉(zhuǎn)換、算術(shù)運(yùn)算符、邏輯運(yùn)算符等相關(guān)原理與操作技巧,需要的朋友可以參考下2021-08-08詳細(xì)聊聊SpringBoot中動(dòng)態(tài)切換數(shù)據(jù)源的方法
在大型分布式項(xiàng)目中,經(jīng)常會(huì)出現(xiàn)多數(shù)據(jù)源的情況,下面這篇文章主要給大家介紹了關(guān)于SpringBoot中動(dòng)態(tài)切換數(shù)據(jù)源的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-09-09mybatis報(bào)錯(cuò)?resultMapException的解決
這篇文章主要介紹了mybatis報(bào)錯(cuò)?resultMapException的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01mybatis分割字符串并循環(huán),實(shí)現(xiàn)in多個(gè)參數(shù)的操作
這篇文章主要介紹了mybatis分割字符串并循環(huán),實(shí)現(xiàn)in多個(gè)參數(shù)的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06詳解如何將Spring Boot應(yīng)用跑在Docker容器中
這篇文章主要介紹了詳解如何將Spring Boot應(yīng)用跑在Docker容器中,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07Java在OJ時(shí)運(yùn)行超時(shí)的問(wèn)題解決方案
Java語(yǔ)言什么都好,就是在OJ的時(shí)候真的是太慢了,今天來(lái)講解一種讓Java運(yùn)行速度快速提高的方法,感興趣的朋友一起看看吧2023-11-11windows java.exe內(nèi)存暴漲解決、idea跑java\ tomcat內(nèi)存無(wú)限增長(zhǎng)
這篇文章主要介紹了windows java.exe內(nèi)存暴漲解決、idea跑 java\ tomcat內(nèi)存無(wú)限增長(zhǎng),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01