我有以下情况:
parent.pom
<profiles>
<profile>
<id>P1</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<build>
whatever
</build>
</profile>
<profile>
<id>P2</id>
<activation>
<property>
<name>prop1</name>
</property>
</activation>
<build>
whatever
</build>
</profile>
有没有办法只有&#34; mvn清理安装&#34; on child激活配置文件P2,而无需指定类似&#34; mvn clean install -PP2&#34;或&#34; mvn clean install -Dprop1&#34;或更改settings.xml?
prop1不是配置,或者它只是一个激活配置文件P2的配置。
我试过了:
child.pom
<properties>
<prop1>exists</prop1>
</properties>
但由于http://maven.apache.org/guides/introduction/introduction-to-profiles.html
,它无法正常工作那么,有没有人做过或需要类似的东西?
答案 0 :(得分:1)
您在这里描述的是一个想要无条件激活配置文件的情况。所以你应该能够通过<activeByDefault>
实现这一点。
在您的情况下,如果您将<activeByDefault>
的{{1}}设置为P2
,您会看到配置文件true
和P1
(以及任何此类配置文件都默认激活(是的,您可以通过这种方式激活尽可能多的P2
。您可以通过以下方式验证此行为:
profile
请注意这些档案中的警告:
此配置文件将自动为所有版本激活,除非 使用其中一个激活同一个POM中的另一个配置文件 先前描述的方法。默认情况下处于活动状态的所有配置 激活POM中的配置文件时自动停用 在命令行上或通过其激活配置。
在mvn help:active-profiles
和<exists>
上,它们实际上是用于文件,但从<missing>
开始,允许对这些标记进行插值。引用文档,
此示例将在生成的文件时触发配置文件 target / generated-sources / axistools / wsdl2java / org / apache / maven是 丢失。
Maven 2.0.9
从Maven 2.0.9开始,标签就可以了 插值。支持的变量是系统属性,如 $ {user.home}和环境变量,如$ {env.HOME}。请注意 POM本身定义的属性和值不可用 用于插值,例如,以上示例激活器无法使用 $ {project.build.directory}但需要对路径目标进行硬编码。