maven环境隔离
引言
在Maven项目开发中,一般都会有四种环境情形:
1. 本地环境(Local) 2. 开发环境(Dev) 3. 测试环境(Beta) 4. 发布环境(Prod)
在不同环境中,总会遇到FTP服务器配置不一样,数据库配置不一样等一系列问题,这样Maven的环境隔离将有助于我们轻松切换不同配置环境。
配置预览
maven环境隔离解决的实际问题
- 避免人工修改犯错(忘了修改线上、线下地址)
- 轻松分环境编译、打包、部署
maven环境隔离的配置及原理
pom.xml 中 build节点上增加如下配置
<resources> <resource> <directory>src/main/resourcesdirectory> <filtering>truefiltering> <excludes> <exclude>application-local.propertiesexclude> <exclude>application-dev.propertiesexclude> <exclude>application-prod.propertiesexclude> <exclude>application-test.propertiesexclude> excludes> resource> <resource> <directory>src/main/resourcesdirectory> <filtering>truefiltering> <includes> <include>application-${activatedProperties}.propertiesinclude> <include>application.propertiesinclude> includes> resource> resources>
其中 ${activatedProperties} 对应下述配置节点中的 activatedProperties 属性值
接着在 pom.xml 中增加 profiles 节点
<profiles> <profile> <id>localid> <properties> <activatedProperties>localactivatedProperties> properties> <activation> <activeByDefault>trueactiveByDefault> activation> profile> <profile> <id>devid> <properties> <activatedProperties>devactivatedProperties> properties> profile> <profile> <id>testid> <properties> <activatedProperties>testactivatedProperties> properties> profile> <profile> <id>prodid> <properties> <activatedProperties>prodactivatedProperties> properties> profile> profiles>
其中 activeByDefault 是设置默认环境
最后在 application.properties 中配置 @activatedProperties@
spring.profiles.active=@activatedProperties@
配置完成后可以在 idea右侧的 Maven Projects 中就可以看到环境已经生成了并默认 local环境
一个简单的环境隔离就OK了。
测试:
目前我们选择 prod 环境,把项目运行起来, 看到 【target -> classes】 是我们设置的prod环境 application-prod.properties