2011-01-11 133 views
15

我的项目继承的POM包含一些<pluginManagement>release插件指定了一些额外的arguments从命令行覆盖在pom pluginManagement中定义的Maven插件配置

我的问题是:有没有办法在这种情况下从命令行覆盖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或不使用它。

回答

10

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

<pluginManagement> 
    <plugin> 
     <artifactId>maven-release-plugin</artifactId> 
     <configuration> 
      <arguments>${arguments} -Prelease</arguments> 
     </configuration> 
    </plugin> 
</pluginManagement> 
6

不能覆盖的配置,这是已经在POM设置(见Maven Bug MNG-4979)。你可以使用变量来避免这种行为。你的答案片段使用它。

+0

MNG-4979的更新链接:https://issues.apache.org/jira/browse/MNG-4979 – erwaman 2017-04-04 17:41:18