具有多个条件的Maven配置文件激活

bhi*_*nks 40 maven-2 pom.xml

我正在努力在项目中获取rpm-maven插件设置.在我们的暂存和生产环境中,构建发生在Red Hat盒子上,但是我们有几个用于开发和测试的Windows盒子,所以我希望RPM构建过程成为仅在有一个盒子上的活动的配置文件的一部分rpmbuild已安装.

这是我第一次尝试激活条件:

<activation>
  <os>
    <family>unix</family>
  </os> 
  <file>
    <exists>/usr/bin/rpmbuild</exists>
  </file>
</activation>
Run Code Online (Sandbox Code Playgroud)

我最初的测试只涉及在Windows机箱上构建并构建在CentOS机箱上,两者都给了我预期的结果.后来,这个版本在没有rpmbuild的Linux机器上破解了.看起来像这样的两个条件不受支持.是这样的吗?我意识到我可能只是摆脱<os/>元素并获得我想要的结果,但是为了将来参考是否有更好的方法来创建具有多个激活条件的配置文件?

Nis*_*ant 42

Maven <activation>块是一个列表OR- 只要满足第一个条件,配置文件就会被激活.因此,至少在此错误报告得到修复之前,您的问题不太可能有解决方案https://issues.apache.org/jira/browse/MNG-4565


更新:

现在已经修复了3.2.2 - sfussenegger(通过评论)

  • @bhinks虽然没有意义.可悲的是,Maven:权威指南说它的行为应该是"AND" - 但事实并非如此. (6认同)
  • 现在已经在3.2.2中修复了 (3认同)
  • 因为我在谷歌上做的每一次搜索都会弹出这个SO.如果你想做一个OR你怎么做?例如,如果他们使用命令-Ddeep-clean OR -Dlight-clean,我想激活.从3.2.2开始这不再可能吗? (3认同)

Gab*_*ica 14

最糟糕的是你可以混合不同类型的条件,例如文件,jdk和属性,如http://www.sonatype.com/books/mvnref-book/reference/profiles-sect-activation.html所述,但你不能甚至把两个相同类型的条件,例如两个属性

<activation>
    <property>
           <name>integrationTest</name>
    </property>
    <property>
        <name>packaging</name>
        <value>swf</value>
    </property>
 </activation>
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为只<property>允许一个标签.相关的JIRA:https://issues.apache.org/jira/browse/MNG-3328

上面描述的错误仍然是开放的... 5年只是一个耻辱!

  • 9年还算数. (3认同)
  • 7年了!刚刚投了赞成票。不要以为这会改变什么。 (2认同)

Mys*_*ion 12

刚刚修好我:)

从3.2.2开始,它将按预期工作:多个条件将被AND

参考 - https://github.com/apache/maven/commits/master,搜索MNG-4565

提交URL - https://github.com/apache/maven/commit/c6529932f9e3efdfc86ed73f59a307a8f8b6ea5f

  • 希望OR或AND都是选择.不幸的是,OR刚被删除了. (7认同)
  • 您能否提供实际的提交 URL(基于提交哈希)?现在 3.5 年后,需要进行大量的工作才能进行搜索! (2认同)