Maven: 只有在未激活 Profile B 时才激活 Profile A?

12

我有两个Maven配置文件:profile-A和profile-B。只有在"A"没有被激活时,“B”才应该被激活。

因此,如果我调用:

mvn install

执行了 profile-B(但未执行 profile-A)。 但是如果我调用

mvn install -Pprofile-A

那么只有profile-A会被执行(但不包括profile-B)。

有什么提示可以告诉我如何编写我的pom.xml来实现这一点吗?

我已经尝试过这个,但它不起作用:

<profiles>
  <profile>
    <id>profile-A</id>
    <activation>
      <activeByDefault>false</activeByDefault>
    </activation>
    ...
  </profile>

  <profile>
    <id>profile-B</id>
    <activation>
      <activeByDefault>true</activeByDefault>
      <property>
        <name>!profile-A</name>
      </property>       
      ...
    </activation>
    ...
  </profile>
</profiles>
1个回答

12

1
只是想澄清一个让我困惑了大约15分钟的问题。根据上面链接的最新版本关于activeByDefault(重点在于我):“除非使用先前描述的方法之一激活了同一POM中的另一个配置文件,否则此配置文件将自动对所有构建生效。”在我的情况下,我已将配置文件B添加到父POM中,并将配置文件A添加到多模块构建中的叶子POM中。在这种配置下,当通过命令行激活配置文件A时,配置文件B并没有被禁用。将配置文件A和B移动到同一POM中可以产生期望的行为。 - Rusty Shackleford

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接