不管是自己編寫的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>
但是實(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)用了。