【问题标题】:Maven - Is it possible to build a project specifying multiple profiles simultaneously?Maven - 是否可以同时构建一个指定多个配置文件的项目?
【发布时间】:2016-03-02 13:01:13
【问题描述】:

我们正在为仅使用 Web 服务的应用程序开发 Maven 原型。此原型提供三个配置文件,每个环境(开发、预、专业)一个。

关键是我们希望为那些将来可能需要它们的项目提供可选地包含 ORM 依赖项(JPA、Hibernate)的可能性。我们曾考虑创建一个包含这些依赖项的附加配置文件。

当我们构建我们的项目时,我们使用 mvn package -Denvironment=dev。是否可以指定多个配置文件,例如:mvn package -Denvironment=dev,orm?

【问题讨论】:

  • 您没有通过 -D 指定配置文件,而是通过 -P 指定配置文件,是的,您可以拥有多个配置文件,-Pprofile1,profile2。在您的情况下,配置文件可能是通过属性 (-D) 激活的,然后您可以在同一属性上激活两个配置文件(仍然通过 -D)、两个属性(-Dprop1 -Dprop2)或通过 -P 显式激活跨度>
  • 看看this,或许对你有帮助

标签: maven maven-3


【解决方案1】:

是的,这是可能的。但是您似乎首先对how profiles are activated 感到困惑。

命令

mvn package -Denvironment=dev

不会在没有进一步配置的情况下激活任何配置文件。在您的情况下,它之所以有效,是因为您的 POM 中必须有一个配置文件定义,该配置文件定义由系统属性 environment 的存在激活,其值为 dev。您的配置如下所示:

<profiles>
  <profile>
    <activation>
      <property>
        <name>environment</name>
        <value>dev</value>
      </property>
    </activation>
  </profile>
</profiles>

当您使用-Denvironment 传递系统属性时,这就是激活配置文件的魔力。考虑到这一点,您可以使用相同的想法激活多个配置文件:声明多个 &lt;profile&gt; 元素,这些元素由系统属性的存在激活。

<profiles>
  <profile>
    <activation>
      <property>
        <name>myAwesomeProperty1</name>
        <value>true</value>
      </property>
    </activation>
  </profile>
  <profile>
    <activation>
      <property>
        <name>myAwesomeProperty2</name>
        <value>true</value>
      </property>
    </activation>
  </profile>
</profiles>

如果myAwesomeProperty1myAwesomeProperty2 是值为true 的系统属性,则上述配置将激活两个配置文件。

在这种特殊情况下,您似乎想要根据您的环境激活构建,因此基于-P 命令行开关而不是系统激活配置文件可能是一个更好的主意属性。

来自Introduction to Build Profiles

可以使用-P CLI 选项显式指定配置文件。

此选项接受一个参数,该参数是以逗号分隔的要使用的配置文件 ID 列表。指定此选项时,除了由其激活配置或settings.xml 中的&lt;activeProfiles&gt; 部分激活的任何配置文件之外,还将激活选项参数中指定的配置文件。

mvn groupId:artifactId:goal -P profile-1,profile-2

使用此解决方案,您可以使用多个配置文件 ID 调用 Maven。也就是说,如果你在你的配置中有

<profiles>
  <profile>
    <id>profile-1</id>
    <!-- rest of config -->
  </profile>
  <profile>
    <id>profile-2</id>
    <!-- rest of config -->
  </profile>
</profiles>

上述调用将激活profile-1profile-2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-23
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    相关资源
    最近更新 更多