选择每个maven项目的配置文件

时间:2012-04-27 11:06:47

标签: java maven maven-profiles

我有很多maven项目。我有两个不同的全局settings.xml,我需要合并。它们都在配置文件中描述了它们的存储库。我通过镜像和配置文件标签合并了两个settings.xml。 其中一个配置文件由settings.xml文件中的activeProfile标记激活。

我想问你,我如何更改不同项目中的活动配置文件?我可以在项目pom.xml文件中选择它吗?

谢谢, Br,Stristi

4 个答案:

答案 0 :(得分:2)

本文档介绍了如何激活配置文件:Introduction to Build Profiles

您可以通过环境变量激活配置文件,但如果您有许多项目,并且希望每个项目应用配置文件,那么它是在每个单独的项目构建执行之前更改环境变量的故障解决方案。如果使用IDE,则可以配置启动配置以设置每个项目的属性,并且必须在每个项目的持续集成中配置正确的mvn run命令。但是,这将导致无法构建由不同项目组成的聚合构建,这些项目应由不同的配置文件激活。

一种可能的解决方法(看起来并不优雅,但我很确定它会起作用)是根据文件存在激活配置文件,并管理不同项目的“标记文件”以激活所需的项目。例如:

<profiles>
  <profile>
    <activation>
      <file>
        <exists>.profile-A</exists>
      </file>
    </activation>
    ...
  </profile>
</profiles>

预期行为:如果项目的根文件夹中存在名称为“.profile-A”的文件,则会激活此配置文件。

然而,在这一点上出现了一个更有趣的问题:聚合构建时的行为会是什么?

答案 1 :(得分:0)

您可以简单地将activeByDefault标记添加到您的maven个人资料中:

<profiles>
    <profile>
    <id>your-profile</id>
        <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    </profile>
</profiles>

答案 2 :(得分:0)

我在项目中更喜欢这种方式:

<profile>
  <id>dev</id>
  <activation>
    <property>
      <name>env</name>
      <value>dev</value>
    </property>
  </activation>
  ...
</profile>

然后你可以这样激活它:

mvn your_goal -Denv=dev

问候,

Boskop

答案 3 :(得分:0)

听起来您需要使用Repository Manager(ArchivaArtifactoryNexus字母顺序)在settings.xml文件中进行单一配置。这将解决使构建文件环境依赖的问题。