美文网首页
如何调用maven的自定义第三方插件(非别名形式&别名形式)

如何调用maven的自定义第三方插件(非别名形式&别名形式)

作者: 上课睡觉觉 | 来源:发表于2017-03-20 20:43 被阅读0次

    假设我已经自定义了一个叫my-maven-plugin的插件如下,插件的goal名为“goaltest”

    <groupId>myplugin</groupId>
    <artifactId>my-maven-plugin</artifactId>
    <version>1.0</version>
    

    如果一个工程想通过mvn groupId:artifactId:version:goal形式的命令调用my-maven-plugin

    只需将my-maven-plugin发布到远程仓库或装载到本地仓库,那么在该工程中,不需要在pom的plugins属性中引入对my-maven-plugin的依赖,即可直接通过mvn myplugin:my-maven-plugin:1.0:goaltest命令进行调用

    如果一个工程想通过mvn goalPrefix:goal别名形式的命令调用my-maven-plugin

    那么有两种方法可以实现

    1. 必须通过Maven Plugin Plugin指定my-maven-plugin的别名即goalPrefix(假设指定别名为my),并且在该工程pom的plugins属性中引入对my-maven-plugin的依赖,即可通过mvn my:goaltest的形式进行调用

    2. 在maven的settings.xml文件中的pluginGroups属性中添加my-maven-plugin的groupId,

    <pluginGroups>  
           <pluginGroup>myplugin</pluginGroup>  
    </pluginGroups>
    

    同时,plugin的artifactId满足***-maven-plugin或maven-***-plugin命名规范(如果满足命名规范,会自动生成别名***,本文中my-maven-plugin已满足命名规范,将会生成的别名为my),或者同样通过Maven Plugin Plugin指定my-maven-plugin的别名即goalPrefix,做到以上两点,便可以在不需要依赖my-maven-plugin的情况下,直接在工程中通过mvn my:goaltest命令调用my-maven-plugin

    原因探究

    我们随便找个工程在命令行敲一个完全不存在的plugin进行调用,比如我敲的是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)

    这样再回过头去看要如何设置maven的自定义第三方plugin,就一目了然了。

    相关文章

      网友评论

          本文标题:如何调用maven的自定义第三方插件(非别名形式&别名形式)

          本文链接:https://www.haomeiwen.com/subject/upuinttx.html