【问题标题】:Selecting profiles per maven projects为每个 Maven 项目选择配置文件
【发布时间】:2012-05-08 03:14:28
【问题描述】:

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

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

谢谢, 兄弟,斯特里斯蒂

【问题讨论】:

    标签: java maven maven-profiles


    【解决方案1】:

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

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

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

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

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

    然而,此时出现了一个更有趣的问题:聚合构建的情况会是什么?

    【讨论】:

    • 我正在考虑同样的 hack,但不知道您通过询问 聚合构建时的行为是什么?
    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      那么你可以这样激活它:

      mvn your_goal -Denv=dev
      

      问候,

      博斯科普

      【讨论】:

        【解决方案4】:

        您可以简单地将activeByDefault 标签添加到您的 Maven 配置文件中:

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

        【讨论】:

        • 是的,正如我所写,我通过这个标签激活了一个配置文件,正如你所描述的。但问题是,我可以将它设置到项目 pom.xml 文件中以将不同的配置文件激活到不同的项目吗?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-01
        • 2018-07-10
        • 1970-01-01
        相关资源
        最近更新 更多