Java Maven高級(jí)之插件開發(fā)詳解
前言
終于來到了Maven的插件開發(fā),其實(shí)Maven的插件并沒有想象的那么難,剛開始講Maven基礎(chǔ)的時(shí)候就演示了一下JDK是如何打包的,Maven打包只是在JDK打包上封裝了一層而已,Maven也支持自定義插件開發(fā)
創(chuàng)建
我們先使用quickstart原型創(chuàng)建出一個(gè)Maven項(xiàng)目,在pom.xml里面引入一下依賴:
<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>
添加好依賴后,需修改packaging打包方式:
<packaging>maven-plugin</packaging>
之前也講過packaging有哪幾種方式,大家可以各自去在下的上篇博客看看
自定義插件
先創(chuàng)建一個(gè)類CleanTestPlugin,繼承AbstractMojo,這個(gè)抽象類是Maven插件開發(fā)需實(shí)現(xiàn)的一個(gè)類,然后實(shí)現(xiàn)里面的execute方法

然后打包并且安裝到本地倉庫上(命令:mvn clean install)
安裝好后,可以在命令行中輸入:

就能看到打印的日志了。
如果想要在插件中打包時(shí)傳入?yún)?shù),也是可以支持,這里就寫出幾個(gè)示例:

然后在其他項(xiàng)目引入改插件的時(shí)候,綁定好參數(shù)即可

由于只綁定了clean的生命周期,所以只需執(zhí)行mvn clean即可

總結(jié)
自定義插件基本結(jié)束啦,下篇講講Maven原型(archetype)吧。
是不是看完后,感覺沒啥難的,現(xiàn)在回過頭來看一下Maven自帶的maven-jar-plugin插件,其實(shí)沒有想象中那么難,只是結(jié)構(gòu)比較復(fù)雜。

看完這個(gè)之后,大家也可以去看一下SpringBoot的插件源代碼,這個(gè)插件就開發(fā)的比較厲害了,如果比較細(xì)心的任就會(huì)發(fā)現(xiàn),使用這個(gè)插件打包出來的可執(zhí)行包,執(zhí)行的類并不是執(zhí)行的類,而是通過SpringBoot同一的啟動(dòng)類去啟動(dòng) 。
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
解決springboot啟動(dòng)失敗的問題('hibernate.dialect'?not?set)
這篇文章主要介紹了解決springboot啟動(dòng)失敗的問題('hibernate.dialect'?not?set),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
Spring Security自定義認(rèn)證器的實(shí)現(xiàn)代碼
這篇文章主要介紹了Spring Security自定義認(rèn)證器的實(shí)現(xiàn)代碼,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06
Java UrlRewriter偽靜態(tài)技術(shù)運(yùn)用深入分析
通常我們?yōu)榱烁玫木徑夥?wù)器壓力,和增強(qiáng)搜索引擎的友好面,都將文章內(nèi)容生成靜態(tài)頁面,這就產(chǎn)生了偽靜態(tài)技術(shù),也就是我們常說的Url Rewriter重寫技術(shù)2012-12-12
socket編程時(shí)的發(fā)送與接收數(shù)據(jù)時(shí)的問題解析
這篇文章主要為大家介紹了socket編程時(shí)的發(fā)送與接收數(shù)據(jù)時(shí)的問題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
關(guān)于Android觸摸事件分發(fā)的原理詳析
觸摸事件分發(fā)機(jī)制一直以來都是Android中比較重要的一大塊,自定義view,各種復(fù)雜的自定義手勢交互都與觸摸事件分發(fā)機(jī)制關(guān)系密,下面這篇文章主要給大家介紹了關(guān)于Android觸摸事件分發(fā)原理的相關(guān)資料,需要的朋友可以參考下2022-01-01
IDEA搭建Maven模塊化項(xiàng)目的實(shí)現(xiàn)
本文主要介紹了IDEA搭建Maven模塊化項(xiàng)目的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-05-05

