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