【问题标题】:How to ignore a Maven plugin如何忽略 Maven 插件
【发布时间】:2013-04-18 15:31:42
【问题描述】:

我们有一个用于 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。

【问题讨论】:

    标签: maven maven-3 maven-plugin


    【解决方案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>
    

    另一种方法是调整 old 插件的 pom.xml,将其重命名为不同的名称。但这意味着您的同事将需要不同的执行不同的 mvn 命令。或者您可以重命名您当前的插件 - 类似的结果。

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

    【讨论】:

    • 我最终重命名了插件。感谢您的建议。
    猜你喜欢
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多