首页 > 解决方案 > maven 配置文件是否可以引用另一个配置文件的内容或从另一个配置文件继承?

问题描述

背景

我们必须为不同的环境构建我们的应用程序,传递给构建管道的目标环境的唯一信息(在我们无法访问的独立构建机器中)是具有值的属性,因此

mvn package -Dtarget=env1

为了适应不同的环境,我们在主 pom 中维护了几个由不同属性值激活的配置文件:

<project>
    <groupId>whatever</groupId>
    <artifactId>whatever</artifactId>
    <version>whatever</version>

    <profiles>
        <profile>
            <id>app-for-env1</id>
            <activation>
                <property>
                    <name>target</name>
                    <value>env1</value>
                </property>
            </activation>
            <properties>
                <!-- properties for env1 -->
            </properties>
            <modules>
                <!-- modules for env1 -->
            </modules>
            <dependencyManagement>
                <!-- dependencyManagement for env1 -->
            </dependencyManagement>
        </profile>

        <profile>
            <id>app-for-env2</id>
            <activation>
                <property>
                    <name>target</name>
                    <value>env2</value>
                </property>
            </activation>
            <properties>
                <!-- properties for env2 -->
            </properties>
            <modules>
                <!-- modules for env2 -->
            </modules>
            <dependencyManagement>
                <!-- dependencyManagement for env2 -->
            </dependencyManagement>
        </profile>
    </profiles>

</project>

目前它适用于两个不同的运行时环境 env1 和 env2。

但是,我们需要支持与 env2 非常相似的 env3,因此我们必须复制整个 app-for-env2 配置文件以满足要求。

那么 Maven 配置文件是否可以引用另一个配置文件的内容或从另一个配置文件继承?

标签: mavenprofile

解决方案


推荐阅读