J E*_*lis 5 maven-2 maven maven-profiles rpm-maven-plugin
我正在使用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>
Run Code Online (Sandbox Code Playgroud)
在Maven输出中:
OS name: "mac os x", version: "10.9.4", arch: "x86_64", family: "mac"
Run Code Online (Sandbox Code Playgroud)
但是,Maven将rpmPhase设置为"package"而不是"none",这不是预期的行为.
任何人都可以看到我在这里遗失了什么吗?
编辑:
此外,如果我将OS系列设置为不存在的东西,或者我完全注释掉激活块,则使用默认配置文件,因此Maven似乎正在积极地将我的OSX与Unix系列操作系统匹配.
我有同样的问题,这是一个解释问题的JIRA问题:
https://jira.codehaus.org/browse/MNG-4983
他们说它实际上不是一个bug.如果您需要OSX和Unix分开,这是一个解决方法:
<os>
<family>unix</family>
<name>!mac os x</name>
</os>
Run Code Online (Sandbox Code Playgroud)
因此,环顾四周后,似乎 OSX 与 Maven 下的“Unix family”相匹配。显然,该检查会将任何以“x”结尾的操作系统标记为 Unix 系列,这似乎是一种愚蠢的方法。不幸的是,您似乎无法执行任何 AND 或 OR 运算符,因此您必须选择一个系列,并且只能选择一个系列。因此,我将 unix 更改为 !mac 以至少避免 OSX 下的问题。当然,如果构建在 Windows 上运行,它仍然会突然出现。
| 归档时间: |
|
| 查看次数: |
1333 次 |
| 最近记录: |