不管是自己編寫的plugin插件侵续,還是springboot等開源機(jī)構(gòu)提供的插件的畴,都屬于自定義的第三方plugin塘砸。
這兩天學(xué)習(xí)springboot的時(shí)候末融,關(guān)于maven有一些疑問(wèn)钧惧。
一個(gè)工程,如果pom中未指定plugin包含spring-boot-maven-plugin勾习,那么使用mvn spring-boot:repackage
等命令進(jìn)行打包的時(shí)候浓瞪,不會(huì)去下載spring-boot-maven-plugin.jar文件,會(huì)提示找不到plugin即如下錯(cuò)誤:
[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)
如果一個(gè)工程的pom中指定plugin包含spring-boot-maven-plugin巧婶,這時(shí)使用相應(yīng)的命令時(shí)乾颁,會(huì)去遠(yuǎn)程maven倉(cāng)庫(kù)下載spring-boot-maven-plugin.jar(如果本地倉(cāng)庫(kù)中沒(méi)有的話)。
我們知道艺栈,調(diào)用自定義的plugin時(shí)一般是通過(guò)mvn groupId:artifactId:version:goal
這種固定格式來(lái)進(jìn)行調(diào)用英岭,例如我們調(diào)用spring-boot-maven-plugin的某個(gè)goal,命令為
mvn org.springframework.boot:spring-boot-maven-plugin:1.5.2.RELEASE:start
湿右,如果我們要通過(guò)別名來(lái)進(jìn)行調(diào)用诅妹,比如mvn idea:clean
命令,那么我們就必須在maven的settings.xml文件中的pluginGroups標(biāo)簽下加入我們自定義的plugin的groupId
<pluginGroups>
<pluginGroup>org.springframework.boot</pluginGroup>
</pluginGroups>
但是實(shí)際情況下,我們沒(méi)有在settings.xml文件中加入spring-boot-maven-plugin的groupId堰塌,那么我們是如何通過(guò)別名來(lái)運(yùn)行mvn spring-boot:repackage
等命令的呢?
我們從倉(cāng)庫(kù)下載并解壓spring-boot-maven-plugin-1.5.2.RELEASE.jar文件分衫,找到它的pom文件(本質(zhì)上spring-boot-maven-plugin也是一個(gè)maven工程)场刑,發(fā)現(xiàn)pom中指定了屬性<goalPrefix>spring-boot</goalPrefix>
,既然指定了前綴,那么肯定可以通過(guò)mvn spring-boot
來(lái)進(jìn)行調(diào)用了牵现。