用户定义的属性的Maven配置文件

时间:2014-12-29 20:35:18

标签: maven properties profile defined

我有以下情况:

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

,它无法正常工作

那么,有没有人做过或需要类似的东西?

1 个答案:

答案 0 :(得分:1)

您在这里描述的是一个想要无条件激活配置文件的情况。所以你应该能够通过<activeByDefault>实现这一点。

在您的情况下,如果您将<activeByDefault>的{​​{1}}设置为P2,您会看到配置文件trueP1(以及任何此类配置文件都默认激活(是的,您可以通过这种方式激活尽可能多的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}但需要对路径目标进行硬编码。