0

我目前有一个带有特定平台配置文件的 pom(例如 linux 32 位、windows 64 位等)。此外,我已将其设置为自动选择调用者的平台作为默认值。

现在,假设我在一台 linux 32 机器上:我还想通过调用为 win64 构建,mvn -Pwin64 pakage但这样做,linux32 和 win64 配置文件都被激活。我尝试activeProfiles使用ativation标签激活本地平台配置文件。问题在于 -P 不会禁用所有其他配置文件,如文档中所述:

此选项采用一个参数,该参数是以逗号分隔的要使用的配置文件 ID 列表。指定此选项时,不会激活选项参数中指定的配置文件以外的配置文件。

我理解错了吗?你会怎么处理这个?

注意:我知道我可以运行mvn -P-linux32,win64但这仅在 linux32 平台上有效,任何错误都可能导致带有重复类的臃肿构建。

谢谢!

4

2 回答 2

4

个人资料文档中的此声明:

从 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 配置文件。

于 2012-10-04T17:41:35.987 回答
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>
于 2012-10-04T10:32:45.987 回答