【问题标题】:Maven profile by user defined property用户定义属性的 Maven 配置文件
【发布时间】:2015-02-26 00:54:55
【问题描述】:

我有以下情况:

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>

有没有什么方法可以让子级上的“mvn clean install”激活配置文件 P2 而无需指定“mvn clean install -PP2”或“mvn clean install -Dprop1”之类的配置文件或更改 settings.xml?

prop1 不是配置或,它只是激活配置文件 P2 的配置。

我试过了:

child.pom
<properties>
    <prop1>exists</prop1>
</properties>

但由于http://maven.apache.org/guides/introduction/introduction-to-profiles.html,它并没有像我预期的那样工作

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

【问题讨论】:

  • 您实际上是在描述无条件激活,在这种情况下,您应该将配置文件 P2&lt;activeByDefault&gt; 设置为 true(然后将 profiles P1 和 @987654329 @ 默认为active)。
  • 这种情况可以吗?默认激活 2 个配置文件?
  • &lt;exists&gt;&lt;missing&gt; 旨在用作驱动激活的条件,通常用于&lt;file&gt;s,尽管从Maven 2.0.9 开始,这些可以被插值。支持的变量是${user.home} 等系统属性和${env.HOME} 等环境变量。
  • 我必须说我没有尝试使用&lt;activeByDefault&gt; 激活 2 个配置文件。不过,我看不出有什么理由不应该支持它。
  • 我做了一个快速测试并确认它有效 - 您可以拥有任意数量的个人资料&lt;activeByDefault&gt;。但是,请阅读文档中有关此类配置文件的警告:“除非使用上述方法之一激活同一 POM 中的另一个配置文件,否则此配置文件将自动对所有构建处于活动状态。默认情况下处于活动状态的所有配置文件都会自动在命令行或通过其激活配置激活 POM 中的配置文件时停用。"

标签: maven properties profile defined


【解决方案1】:

您在此处描述的实际上是想要无条件激活配置文件的情况。所以你应该可以通过&lt;activeByDefault&gt;来实现。

在您的情况下,如果您将P2&lt;activeByDefault&gt; 设置为true,您将看到配置文件P1P2(以及任何此类配置文件)都默认激活(是,您可以通过这种方式激活任意数量的profiles)。您可以通过这种方式验证此行为:

mvn help:active-profiles

但请注意此类配置文件上的警告:

此配置文件将自动对所有构建有效,除非 使用其中一个激活同一 POM 中的另一个配置文件 之前描述的方法。默认情况下处于活动状态的所有配置文件 当 POM 中的配置文件被激活时会自动停用 在命令行上或通过其激活配置。

&lt;exists&gt;&lt;missing&gt; 上,它们实际上是用于文件的,尽管从Maven 2.0.9 开始,允许插入这些标签。引用文档,

这个例子会在生成文件的时候触发profile 目标/生成源/axistools/wsdl2java/org/apache/maven 是 不见了。

<profiles>
  <profile>
    <activation>
      <file>
        <missing>target/generated-sources/axistools/wsdl2java/org/apache/maven</missing>
      </file>
    </activation>
    ...
  </profile>
</profiles>

从 Maven 2.0.9 开始,标签 和 可能是 插值。支持的变量是系统属性,如 ${user.home} 和 ${env.HOME} 等环境变量。请注意 POM 本身中定义的属性和值不可用 在这里插值,例如上面的示例激活器不能使用 ${project.build.directory} 但需要硬编码路径目标。

【讨论】:

    猜你喜欢
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-11
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多