Maven Profile(配置文件)是 Maven 提供的一种机制,用于在不同的环境或条件下使用不同的构建配置。Profile 允许开发者定义多套配置,并在构建时根据条件激活相应的配置。
Profile 的定义位置:
- pom.xml:项目级别的 Profile,只对当前项目有效
- settings.xml:用户级别的 Profile,对所有项目有效
- ~/.m2/settings.xml:全局级别的 Profile,对所有用户和项目有效
Profile 的激活方式:
- 命令行激活:使用
-P参数指定激活的 Profile
bashmvn clean install -Pdev mvn clean install -Pdev,test
- 环境变量激活:通过环境变量判断
xml<profiles> <profile> <id>dev</id> <activation> <property> <name>env</name> <value>dev</value> </property> </activation> </profile> </profiles>
- JDK 版本激活:根据 JDK 版本自动激活
xml<activation> <jdk>11</jdk> </activation>
- 操作系统激活:根据操作系统自动激活
xml<activation> <os> <family>Windows</family> </os> </activation>
- 文件存在激活:根据文件是否存在自动激活
xml<activation> <file> <exists>src/main/resources/dev.properties</exists> </file> </activation>
Profile 的常见应用场景:
- 多环境配置:开发、测试、生产环境使用不同的配置
xml<profiles> <profile> <id>dev</id> <properties> <env>dev</env> <db.url>jdbc:mysql://localhost:3306/dev</db.url> </properties> </profile> <profile> <id>prod</id> <properties> <env>prod</env> <db.url>jdbc:mysql://prod-db:3306/prod</db.url> </properties> </profile> </profiles>
- 依赖管理:不同环境使用不同的依赖版本
- 插件配置:不同环境使用不同的插件配置
- 资源过滤:根据 Profile 过滤不同的资源文件
xml<build> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build>
最佳实践:
- 为不同环境定义清晰的 Profile 名称(dev、test、prod)
- 使用属性(properties)统一管理环境相关的配置
- 在父 POM 中定义通用的 Profile,子模块可以继承
- 避免在 Profile 中定义过多的配置,保持简洁
- 使用
-P参数激活多个 Profile 时,注意配置的优先级 - 在 CI/CD 流程中使用 Profile 自动化不同环境的构建
常用命令:
mvn help:active-profiles:查看当前激活的 Profilemvn help:all-profiles:查看所有可用的 Profilemvn clean install -Pprofile1,profile2:激活多个 Profile