我正在使用Maven构建一些项目,并且使用gMaven插件构建包含主要工件的RPM。我只希望Maven尝试在具有rpmbuild的系统上构建RPM,而不是在没有的系统上构建RPM,因此我构建了两个独立的配置文件,一个应该是默认的,一个应该在Unix系列上激活OS。
我可以发誓我测试了它并且一切正常,但现在它正在运行Unix系列配置文件,即使我在OSX上构建。但是,如果我将配置文件的OS系列更改为" windows"它肯定知道它不在Windows机器上,因此运行默认配置文件。
以下是我的pom.xml文件的相关部分:
<profiles>
<profile>
<id>default-profile</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<rpmPhase>none</rpmPhase>
</properties>
</profile>
<profile>
<id>rpm-profile</id>
<activation>
<os>
<family>unix</family>
</os>
</activation>
<properties>
<rpmPhase>package</rpmPhase>
</properties>
</profile>
</profiles>
在Maven输出中:
OS name: "mac os x", version: "10.9.4", arch: "x86_64", family: "mac"
但是,Maven将rpmPhase设置为&#34; package,&#34;而不是&#34;无,&#34;这不是预期的行为。
任何人都可以看到我在这里遗失了什么吗?
编辑:
另外,如果我将OS系列设置为不存在的东西,或者我完全注释掉激活块,则使用默认配置文件,因此Maven似乎正在积极地将我的OSX与Unix匹配家庭操作系统。
答案 0 :(得分:5)
我有同样的问题,这是一个解释问题的JIRA问题:
https://jira.codehaus.org/browse/MNG-4983
他们说它实际上不是一个错误。如果您需要OSX和Unix分开,这是一个解决方法:
<os>
<family>unix</family>
<name>!mac os x</name>
</os>
答案 1 :(得分:1)
因此,在环顾四周之后,OSX似乎与Maven下的“Unix家族”相匹配。显然,检查将任何以“x”结尾的操作系统标记为Unix系列,这似乎是一种愚蠢的方式。遗憾的是,您似乎无法执行任何AND或OR运算符,因此您必须选择一个系列和一个系列。因此,我将unix更改为!mac以至少避免OSX下的问题。当然,如果构建在Windows上运行,它仍然会出现。