假設(shè)我已經(jīng)自定義了一個叫my-maven-plugin的插件如下场钉,插件的goal名為“goaltest”
<groupId>myplugin</groupId>
<artifactId>my-maven-plugin</artifactId>
<version>1.0</version>
如果一個工程想通過mvn groupId:artifactId:version:goal
形式的命令調(diào)用my-maven-plugin
只需將my-maven-plugin發(fā)布到遠程倉庫或裝載到本地倉庫俐银,那么在該工程中,不需要在pom的plugins屬性中引入對my-maven-plugin的依賴理逊,即可直接通過mvn myplugin:my-maven-plugin:1.0:goaltest
命令進行調(diào)用
如果一個工程想通過mvn goalPrefix:goal
別名形式的命令調(diào)用my-maven-plugin
那么有兩種方法可以實現(xiàn)
必須通過Maven Plugin Plugin指定my-maven-plugin的別名即goalPrefix(假設(shè)指定別名為my)橡伞,并且在該工程pom的plugins屬性中引入對my-maven-plugin的依賴,即可通過
mvn my:goaltest
的形式進行調(diào)用在maven的settings.xml文件中的pluginGroups屬性中添加my-maven-plugin的groupId晋被,
<pluginGroups>
<pluginGroup>myplugin</pluginGroup>
</pluginGroups>
同時兑徘,plugin的artifactId滿足***-maven-plugin或maven-***-plugin命名規(guī)范(如果滿足命名規(guī)范,會自動生成別名***羡洛,本文中my-maven-plugin已滿足命名規(guī)范挂脑,將會生成的別名為my),或者同樣通過Maven Plugin Plugin指定my-maven-plugin的別名即goalPrefix,做到以上兩點崭闲,便可以在不需要依賴my-maven-plugin的情況下肋联,直接在工程中通過mvn my:goaltest
命令調(diào)用my-maven-plugin
原因探究
我們隨便找個工程在命令行敲一個完全不存在的plugin進行調(diào)用,比如我敲的是mvn xxx:xxx
刁俭;會看到如下出錯信息
[ERROR] No plugin found for prefix 'xxx' in the current project and in the plugin groups [myplugin, 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)] -> [Help 1]
可以看到橄仍,maven的插件搜索范圍包括:
- 當前工程包含的插件
- 默認的org.apache.maven.plugins和org.codehaus.mojo兩個group下的插件
- 我們配置的pluginGroup下的插件(本文中即myplugin)
這樣再回過頭去看要如何設(shè)置maven的自定義第三方plugin,就一目了然了牍戚。