maven第三方plugin加載原理

不管是自己編寫的plugin插件,還是springboot等開源機(jī)構(gòu)提供的插件,都屬于自定義的第三方plugin。

這兩天學(xué)習(xí)springboot的時候,關(guān)于maven有一些疑問。

一個工程,如果pom中未指定plugin包含spring-boot-maven-plugin,那么使用mvn spring-boot:repackage等命令進(jìn)行打包的時候,不會去下載spring-boot-maven-plugin.jar文件,會提示找不到plugin即如下錯誤:

[ERROR] No plugin found for prefix 'spring-boot' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo] available from the repositories [local (/Users/gaozengrong/repository), tbmirror (http://mvnrepo.alibaba-inc.com/mvn/repository), tbmirror-snapshots (http://mvnrepo.alibaba-inc.com/mvn/repository)

如果一個工程的pom中指定plugin包含spring-boot-maven-plugin,這時使用相應(yīng)的命令時,會去遠(yuǎn)程maven倉庫下載spring-boot-maven-plugin.jar(如果本地倉庫中沒有的話)。

我們知道,調(diào)用自定義的plugin時一般是通過mvn groupId:artifactId:version:goal這種固定格式來進(jìn)行調(diào)用,例如我們調(diào)用spring-boot-maven-plugin的某個goal,命令為
mvn org.springframework.boot:spring-boot-maven-plugin:1.5.2.RELEASE:start,如果我們要通過別名來進(jìn)行調(diào)用,比如mvn idea:clean命令,那么我們就必須在maven的settings.xml文件中的pluginGroups標(biāo)簽下加入我們自定義的plugin的groupId

<pluginGroups>  
       <pluginGroup>org.springframework.boot</pluginGroup>  
</pluginGroups>

(原因:默認(rèn)情況下Maven只會在org.apache.maven.plugins和org.codehaus.mojo兩個groupId下搜索插件,所以我們要將插件的groupId放在Maven默認(rèn)的插件搜尋范圍之內(nèi)。)

但是實(shí)際情況下,我們沒有在settings.xml文件中加入spring-boot-maven-plugin的groupId,那么我們是如何通過別名來運(yùn)行mvn spring-boot:repackage等命令的呢?
我們從倉庫下載并解壓spring-boot-maven-plugin-1.5.2.RELEASE.jar文件,找到它的pom文件(本質(zhì)上spring-boot-maven-plugin也是一個maven工程),發(fā)現(xiàn)pom中指定了屬性<goalPrefix>spring-boot</goalPrefix>,既然指定了前綴,那么肯定可以通過mvn spring-boot來進(jìn)行調(diào)用了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容