文章目录
参考文章:Maven实现多环境配置切换
1. 问题描述
开发环境、测试环境、生产环境——–我们的软件在不同的环境中,系统参数和配置可能会不一样,比如数据源配置、日志文件配置、以及一些软件运行过程中的基本配置,那每次我们将软件部署到不同的环境时,都需要修改相应的配置文件?Maven提供了一种方便的解决这种问题的方案,就是profile功能。
2. 定义多环境配置文件
- 在src/main/resources下新建配置文件(yml/yaml),如下表所示:
profile | 文件名 | 配置文件内容 |
---|---|---|
全局 | application.yaml | 项目统一配置 |
test | application-test.yaml | 本地测试环境 |
dev | application-dev.yaml | 线上开发环境 |
prod | application-prod.yaml | 生产环境 |
3. 修改Maven pom配置
3.1 添加profiles配置
- 每一个profile子节点代表一个环境,id代表maven部署打包时指定的环境参数
- activeByDefault节点指定当前环境是否是默认环境
- 核心是在编译过程中,读取不同的配置文件**${profileActive}**,然后再由spring去读取参数配置
<!--profiles配置-->
<profiles>
<!--开发环境 -->
<profile>
<id>dev</id>
<properties>
<profileActive>dev</profileActive>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!--本地环境 -->
<profile>
<id>test</id>
<properties>
<profileActive>test</profileActive>
</properties>
</profile>
</profiles>
3.2 添加build配置
- application-${profileActive}.yaml 指定当前环境的配置文件,位于src/main/resources目录下
- 若存在多个配置文件,需一一添加上。
<build>
<!--Resource文件编译配置-->
<resources>
<resource>
<directory>src/main/resources</directory>
<!--设置资源排除-->
<excludes>
<exclude>application*.yaml</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>application-${profileActive}.yaml</include>
<include>application.yaml</include>
<!--附上resources目录下的其它配置-->
<include>logback.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
<!--默认maven编译配置-->
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
3.3 定义运行参数
- 在全局配置文件application.yaml中定义配置文件变量(来源于profile里的标签),如图所示:
4. 指定运行环境
4.1 本地运行
4.2 云端编译
-
发布到云端开发环境时,使用以下命令打包(结尾加上 -P dev),会自动将@profileActive@替换为dev:
mvn clean package -DskipTests=true -U -P dev
注:采用Jenkins部署时,若存在多种环境,可采用【参数化构建/选项参数】进行自动化地配置。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/70899.html