我有以下父pom.xml文件:
<profile>
<id>build_full</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<modules>
<module>mymodule_interface</module>
<module>mymodule_switch</module>
<module>mymodule_switch_simulator</module>
<module>mymodule_switch_controller</module>
<module>mymodule_server</module>
</modules>
</profile>在我给mymodule_server的孩子pom中,我有以下几点:
<profile>
<id>subprofile</id>
<modules>
<module>...various modules...</module>
</modules>
</profile>
<profile>
<id>default</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<modules>
<module>...various modules...</module>
</modules>
</profile> 当我调用maven:mvn -P build_full时,如何强制子模块(mymodule_server)使用配置文件subprofile而不是default
发布于 2016-02-10 08:35:05
不,不能从父配置文件激活子配置文件。更普遍的是,不能从任何其他配置文件激活或停用任何配置文件 (有一个JIRA特性--request MNG-3309)。你能做的就是基于相同的属性激活两个配置文件。
首先,使用默认激活的配置文件通常不是一个好主意。您想要的是基于某种条件(OS版本、系统属性.)激活配置文件。为了解决您的问题,您可以在某个系统属性存在时激活build_full配置文件,并确保在存在相同属性时也激活了subprofile。
示例配置如下所示,当fullBuild系统属性设置为true时,这两个配置文件都会被激活。因此,用mvn -DfullBuild=true ...调用Maven将激活这两个配置文件。
<profile>
<id>build_full</id>
<activation>
<property>
<name>fullBuild</name>
<value>true</value>
</property>
</activation>
<modules>
<module>mymodule_interface</module>
<module>mymodule_switch</module>
<module>mymodule_switch_simulator</module>
<module>mymodule_switch_controller</module>
<module>mymodule_server</module>
</modules>
</profile><profile>
<id>subprofile</id>
<activation>
<property>
<name>fullBuild</name>
<value>true</value>
</property>
</activation>
<modules>
<module>...various modules...</module>
</modules>
</profile>发布于 2016-02-10 08:33:23
在您的示例中,您可以在顶级父/聚合器文件夹中运行:
mvn clean install -Pbuild_full,!default,subprofile它将禁用任何具有名称default的配置文件(从而禁用相关子模块中的配置文件),并启用任何具有名称subprofile的配置文件(从而启用您想要的配置文件)。
或者,您可以将subprofile配置为这样:
<profiles>
<profile>
<id>subprofile</id>
<activation>
<property>
<name>subprofile</name>
<value>true</value>
</property>
</activation>
....然后运行如下:
mvn clean install -Dsubprofile=true -Pbuild_full它也会产生同样的效果。您甚至可以避免使用value元素,只需指定-Dsubprofile,它的存在就足以激活配置文件(在这种情况下,建议使用一个更有意义的名称,如-DactivateSubprofile)。由于您活动的是不同的配置文件,因此自动Maven将禁用默认配置文件。
https://stackoverflow.com/questions/35304770
复制相似问题