Maven Profiles 多环境配置(开发、测试、生产)
profiles标签#
在pom.xml中配置profiles标签
<profiles> <profile> <id>dev</id> <activation> <activeByDefault>true</activeByDefault> <activation> <properties> <build.profile>dev</build.profile> <packageing.type>jar</packageing.type> </properties> <profile/> <profile> <id>test</id> <activation> <activeByDefault>false</activeByDefault> <activation> <properties> <build.profile>test</build.profile> <packageing.type>war</packageing.type> </properties> <profile/> <profile> <id>prod</id> <activation> <activeByDefault>false</activeByDefault> <activation> <properties> <build.profile>prod</build.profile> <packageing.type>jar</packageing.type> </properties> <profile/> </profiles>
activeByDefault标签#
不显式指定环境时, 会取 activeByDefault true 的环境变量, 需要注意的是: 没指定 activeByDefault true 的其他相同 profile id 的 properties 是不会生效的
- 当我们没有显式指定环境时, maven 会默认取activeByDefault 为 true 的 profile
- 当父子 pom 都有相同的 profile id 时, 都需要显式指定 activeByDefault true, 如果不指定, 那么并不会加载没有指定 activeByDefault true 的 properties
- 结论: 对于父子 pom 相同 id 的 profile, 每个 profile 节点都要指定 activeByDefault true
build标签#
<build> <finalName>bdcs</finalName> <resources> <resource> <directory>src/main/resources</directory> </resource> <resource> <directory>src/main/profiles/${build.profile}</directory> </resource> </resources> </build>
使用filter#
profiles标签
<profiles> <!-- 开发环境 --> <profile> <id>dev</id> <properties> <env>dev</env> </properties> </profile> <!-- 生产环境 --> <profile> <id>publish</id> <properties> <env>publish</env> </properties> </profile> <!-- 本地环境 --> <profile> <id>local</id> <properties> <env>local</env> </properties> <!--默认启用--> <activation> <activeByDefault>true</activeByDefault> </activation> </profile> </profiles>
build标签
<build> <!-- 指定使用filter --> <filters> <filter>src/main/resources/profiles/${env}/env.properties</filter> </filters> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/**</include> </includes> <excludes> <exclude>profiles/**</exclude> </excludes> <filtering>true</filtering> </resource> </resources> </build>
切换配置环境#
如果使用idea,直接打开右侧的maven在Profiels下勾选切换即可
如果使用命令行则通过添加后缀 -P
clean -U package -P dev -DskipTests=true -f pom.xml
作者:BigBender
出处:https://www.cnblogs.com/BigBender/p/14865462.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!