我正在努力在项目中获取rpm-maven插件设置。在我们的暂存和生产环境中,构建发生在Red Hat盒子上,但是我们有几个用于开发和测试的Windows盒子,所以我希望RPM构建过程成为仅在有一个盒子上的活动的配置文件的一部分rpmbuild已安装。
这是我第一次尝试激活条件:
<activation>
<os>
<family>unix</family>
</os>
<file>
<exists>/usr/bin/rpmbuild</exists>
</file>
</activation>
我的初步测试只涉及在Windows机箱上构建并在CentOS机箱上构建,两者都给了我预期的结果。后来,这个版本在没有rpmbuild的Linux机器上破解了。看起来像这样的两个条件不受支持。是这样的吗?我意识到我可能只是摆脱<os/>
元素并得到我想要的结果,但是为了将来参考是否有更好的方法来创建具有多个激活条件的配置文件?
答案 0 :(得分:42)
Maven <activation>
阻止是OR
的列表 - 只要满足第一个条件,配置文件就会被激活。因此,至少在此错误报告得到修复之前,您的问题不太可能有解决方案https://issues.apache.org/jira/browse/MNG-4565
现在已修复3.2.2 - sfussenegger(通过评论)
答案 1 :(得分:13)
最糟糕的是你可以混合不同类型的条件,例如文件,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>
这不起作用,因为只允许一个<property>
标记。
相关的JIRA:https://issues.apache.org/jira/browse/MNG-3328
上面描述的错误仍然是开放的... 5年只是一个耻辱!
答案 2 :(得分:12)
由我修好:)
从3.2.2开始,它将按预期工作:多个条件将进行AND运算
参考 - https://github.com/apache/maven/commits/master,按MNG-4565
搜索
提交网址 - https://github.com/apache/maven/commit/c6529932f9e3efdfc86ed73f59a307a8f8b6ea5f
答案 3 :(得分:0)
我认为这是这些Maven扩展所做的:
这很简单,看看source
这个人有more options for the actual activation expression,包括Scala。
但是,因为它是扩展名(不是插件),所以使用它的每个项目都必须注册该扩展名。而且有可能项目作者会放弃它,并且它在将来的Maven版本中将无法使用。