我目前有一个具有平台特定配置文件的pom(例如linux 32bit,windows 64 bit等...)。此外,我已将其设置为自动选择调用者平台作为默认设置。
现在,假设我在linux 32机器上:我也想通过调用mvn -Pwin64 pakage
为win64构建,但这样做,linux32和win64配置文件都被激活了。我尝试使用activeProfiles
并使用ativation
标记激活本地平台配置文件。麻烦的是-P不会禁用所有其他配置文件,如documentation:
此选项采用逗号分隔的参数列表 profile-id使用。如果指定此选项,则不会显示其他配置文件 将激活比选项参数中指定的那些。
我理解这是错的吗?你会怎么处理这个?
注意:我知道我可以运行mvn -P-linux32,win64
但 仅在linux32平台上有效,并且任何错误都可能导致带有重复类的膨胀构建。
谢谢!
答案 0 :(得分:4)
来自profile docs的声明:
从Maven 3.0开始,POM中的配置文件也可以根据settings.xml中活动配置文件的属性激活。
会引导我尝试下面的解决方案。每个开发人员将其默认平台定义为其settings.xml文件中的属性,并在需要时将其覆盖在cmdline上。
开发人员的settings.xml
<profile>
<id>platform-config</id>
<property>
<name>build.platform</name>
<value>win32</value>
</property>
</profile>
....
<activeProfiles>
<activeProfile>platform-config</activeProfile>
</activeProfiles>
项目的pom.xml
<project>
...
<profiles>
<profile>
<id>win32</id>
<activation>
<property>
<name>build.platform</name>
<value>win32</value>
</property>
</activation>
...
</profile>
<profile>
<id>linux32</id>
<activation>
<property>
<name>build.platform</name>
<value>linux32</value>
</property>
</activation>
...
</profile>
</profiles>
然后,mvn install
应该激活win32配置文件,因为build.platform
属性的默认值是win32,而mvn install -Dbuild.platform=linux32
将覆盖默认属性设置并改为使用Linux配置文件。 / p>
答案 1 :(得分:0)
为什么不使用平台激活配置文件,如下所示:
<project>
...
<profiles>
<profile>
<id>win32</id>
<activation>
<activeByDefault>false</activeByDefault>
<os>
<name>Windows XP</name>
<family>Windows</family>
<arch>x86</arch>
<version>5.1.2600</version>
</os>
</activation>
...
</profile>
</profiles>
</project>