【问题标题】:Only one Maven profile executed when using activeByDefault使用 activeByDefault 时仅执行一个 Maven 配置文件
【发布时间】:2015-12-14 03:31:43
【问题描述】:

我在 pom.xml 中定义了两个配置文件:

<profiles>
    <profile>
        <id>nobrand</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <brand>nobrand</brand>
        </properties>
    </profile>
    <profile>
        <id>mybrand</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <brand>mybrand</brand>
        </properties>
    </profile>
</profiles>

&lt;build&gt; 部分仅使用每个配置文件设置的属性。

默认情况下,这两个配置文件都设置为活动状态。但是,只有最后一个是由mvn package 执行的。为什么?我预计构建会执行两次。

【问题讨论】:

标签: maven pom.xml maven-profiles


【解决方案1】:

默认情况下处于活动状态的配置文件会在激活另一个配置文件时自动停用。由于您的两个配置文件都默认激活,因此第二个激活并停用第一个。

引用 Maven 文档中关于 activeByDefault 属性的内容(强调我的):

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

【讨论】:

  • 有没有办法在不通过命令行指定额外的maven参数的情况下执行两个配置文件?
  • @Misterer 为什么一开始就有两个配置文件?什么时候应该激活一个而不是另一个?
  • 我想要的是参数化构建,它将根据这些参数使用不同的资源。例如,这可用于构建定制/品牌应用程序。参数的可能值是静态的,所以如果我可以运行mvn package 并一次性完成所有可能的构建,而不是必须通过命令行指定每个构建,那就太好了。上面的配置文件只有在指定一个不方便的配置文件时才能正常工作(我必须编写一个脚本来一次构建所有这些配置文件)。也许我应该在这里使用其他东西而不是个人资料。
  • @Misterer 是的,配置文件不会削减它。您可以欺骗 Maven 两次执行插件并更改每个插件执行中的属性。看到这个问题:stackoverflow.com/q/7239786/1743880
猜你喜欢
  • 2017-02-26
  • 1970-01-01
  • 2011-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-10
  • 1970-01-01
相关资源
最近更新 更多