我们有一个用于Maven插件的groupId:
com.company.maven.plugins
不幸的是,当我在这个groupId中创建第一个插件时,我最初使用了错误的命名约定。
maven-myplugin-plugin
该插件的1.x版本使用了该名称。当我意识到这是错误的时候,我更改了名称以符合correct convention。
myplugin-maven-plugin
然后我将版本更新为2.x。
在我的本地settings.xml文件中,我使用pluginGroups
从命令行访问我的插件。不必在pom文件中指定此特定插件。
不幸的是,当我尝试从命令行访问我的插件而没有确定名称时,我总是得到最新版本的错误命名约定。所以,我得到一个1.x版本。
从命令行访问时,我可以告诉Maven忽略maven-myplugin-plugin
工件(即mvn myplugin:mygoal
)吗?
有些项目仍然使用旧的1.x插件,所以我不想从我们的存储库中删除它们。此外,我们至少使用Maven 3.0.3。
答案 0 :(得分:1)
似乎Maven3按照
的顺序解析了插件的前缀1. maven-myplugin-plugin
2. myplugin-maven-plugin
3. ... hard-wired groups ...
按照官方命名惯例,应成为另一种方式。不过,我认为你没有机会解决这个问题。我尝试了一系列的东西,主要是在maven-plugin-plugin配置中使用goalPrefix。使用 goalPrefix 安装新版本的已弃用命名的插件不起作用。我想你可以做的一件事是为你正确命名的插件定义另一个前缀,例如:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-plugin-plugin</artifactId>
<version>3.2</version>
<configuration>
<skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound>
<goalPrefix>myplugin2</goalPrefix>
</configuration>
</plugin>
另一种方法可能是调整旧插件的pom.xml,将其重命名为不同的东西。但这意味着你的同事需要一个不同的执行不同的mvn命令。或者你可以重命名你当前的插件 - 类似的结果。
如果有更好的解决方案,我也会感兴趣!