2

我们有一个用于 Maven 插件的 groupId:

com.company.maven.plugins

不幸的是,当我在这个 groupId 中创建第一个插件时,我最初使用了错误的命名约定。

maven-myplugin-plugin

该插件的 1.x 版本使用该名称。当我意识到这是错误的时,我更改了名称以符合正确的约定

myplugin-maven-plugin

然后我将版本更新为 2.x。

在我的本地 settings.xml 文件中,我使用pluginGroups从命令行访问我的插件。这个特定的插件不必在 pom 文件中指定。

不幸的是,当我尝试从命令行访问我的插件而不限定名称时,我总是得到不正确命名约定的最新版本。所以,我得到了一个 1.x 版本。

maven-myplugin-plugin从命令行(即mvn myplugin:mygoal)访问时,我可以告诉 Maven 忽略工件吗?

有些项目仍然使用旧的 1.x 插件,所以我不想从我们的存储库中删除它们。此外,我们至少使用 Maven 3.0.3。

4

1 回答 1

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 命令。或者您可以重命名您当前的插件 - 类似的结果。

如果有更好的解决方案,我也会感兴趣!

于 2013-04-19T09:03:44.200 回答