21

我的项目继承的 POM 包含一些<pluginManagement>用于release指定一些附加arguments.

我的问题是:在这种情况下,有没有办法arguments从命令行覆盖参数?

父 POM 有这个:

<pluginManagement>
    <plugin>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
            <arguments>-Prelease</arguments>
        </configuration>
    </plugin>
</pluginManagement>

由于命令行参数不起作用:

mvn release:prepare -Darguments="-Pmock -Prelease"

-Darguments="-Pmock -Prelease"部分没有任何影响。当arguments尚未指定时,它可以工作。

我无法修改父 POM 或不使用它。

4

2 回答 2

15

找到了解决方案。在我的POM 中,我添加了这个覆盖POM 中的设置并允许在命令行上指定其他参数,例如-Darguments=-Pmock

<pluginManagement>
    <plugin>
        <artifactId>maven-release-plugin</artifactId>
        <configuration>
            <arguments>${arguments} -Prelease</arguments>
        </configuration>
    </plugin>
</pluginManagement>
于 2011-01-14T16:47:06.320 回答
9

您不能覆盖已在 POM 中设置的配置(请参阅Maven Bug MNG-4979)。您可以使用变量来避免这种行为。您的答案片段利用了它。

于 2011-01-19T19:41:34.443 回答