resources下新建application.yml、application-dev.、application-test.yml、application-pro.yml
- application.yml 项目统一配置,不管是开发环境、测试环境或生产环境,都无需更改的配置,如mybatis配置、shiro配置、jwt配置等等
- application-dev.yml 开发环境,配置数据库连接、redis连接、ftp、fastdfs等等
- application-test.yml 测试环境,配置数据库连接、redis连接、ftp、fastdfs等等
- application-pro.yml 生产环境,配置数据库连接、redis连接、ftp、fastdfs等等
在web项目的pom.xml文件里,增加如下配置
<profiles>
<!--开发环境 -->
<profile>
<id>dev</id>
<properties>
<profiles.active>dev</profiles.active>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!--测试环境 -->
<profile>
<id>test</id>
<properties>
<profiles.active>test</profiles.active>
</properties>
</profile>
<!--生产环境 -->
<profile>
<id>pro</id>
<properties>
<profiles.active>pro</profiles.active>
</properties>
</profile>
</profiles>
在web项目的pom.xml文件build节点下,增加如下配置,开启
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<!--用于替换resources里的变量-->
<filtering>true</filtering>
</resource>
</resources>
.........其他配置
</build>
在application.yml里增加如下配置
其中spring.profiles.active:代表当前激活的配置文件,根据上面的配置,会出现三个值:dev、test和pro,在运行/打包时会自动将@profiles.active@替换为这三个值,默认是dev
在开发环境,配置如下:
我们在本机开发时,如果用Application类的方式启动项目,会发现该配置已经自动替换成功了:
如果在开发时用的是外部tomcat启动项目,会发现此配置没有被替换,会导致application-dev.yml的配置无法加载,此问题暂未找到有效的解决办法。
在打包部署时,就可以指定对应的配置文件
mvn clean package 默认激活开发环境配置
mvn clean package -Pdev 指定激活开发环境配置
mvn clean package -Ptest 指定激活测试环境配置
mvn clean package -Ppro 指定激活生产环境配置