Maven完全指南 - 11. 配置分组

64 阅读2分钟

11. 配置分组

在 Maven 中,<profiles> 是一种用于管理项目配置的分组机制,允许用户根据不同的构建需求和环境自动激活或手动选择相应的配置。<profiles> 非常适合处理不同环境(如开发、测试、生产)下的特定配置,使构建过程更灵活。

每个 <profile> 包含特定的配置,如依赖、插件、构建目录等,几乎可以配置哪些在 <project> 根元素下的所有元素。

配置分组.png

11.1 基本结构

<profiles>
    <profile>
        <id>dev</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <env>development</env>
        </properties>
        <build>
            <finalName>myapp-dev</finalName>
        </build>
    </profile>
    <profile>
        <id>prod</id>
        <activation>
            <property>
                <name>env</name>
                <value>prod</value>
            </property>
        </activation>
        <properties>
            <env>production</env>
        </properties>
        <build>
            <finalName>myapp-prod</finalName>
        </build>
    </profile>
</profiles>

11.2 激活方式

配置分组有两种激活方式:

  • 自动激活:通过 <activation> 标签自动激活。

    • <activeByDefault>:设置为 true 表示此配置组为默认配置,除非手动指定了其他配置。
    • <property>:基于 Maven 启动参数激活某个配置组,比如通过 -Denv=prod 可以激活 prod 配置。
    • <jdk>:指定 JDK 版本来激活,适合在不同 JDK 版本中使用不同配置。
    • os:基于操作系统激活配置组。
    • file:基于文件的存在与否激活配置组。
  • 手动激活:使用 -P 参数可以在命令行手动激活特定的配置组,如 mvn clean install -P prod

Maven可以同时激活多个配置组,并且多个配置组的配置信息可以组合在一起。有的可能采用合并的形式,有的可能采用覆盖的形式。

在 Maven 中,<activation> 标签下的多个条件是 “与” 的关系,也就是说,所有条件都必须满足时,配置组 <profile> 才会被激活。

<profile>
    <id>my-profile</id>
    <activation>
        <jdk>11</jdk>
        <os>
            <name>Linux</name>
        </os>
        <file>
            <exists>/path/to/some/file</exists>
        </file>
    </activation>
    <!-- 配置内容 -->
</profile>

在上面的示例中,my-profile 只有在以下所有条件都满足时才会被激活:

  • 当前使用的 JDK 版本为 11。
  • 操作系统为 Linux。
  • /path/to/some/file 文件存在。

如果其中任一条件不满足,则此配置组不会被激活。