SpringBoot中多环境yml的配置与打包问题
作者:保护我方胖虎
SpringBoot 多环境配置与打包 启动的两种方式
前言:
在我们使用SpringBoot 作为框架来开发项目的时候,一般我们大致会分为dev(开发),test(测试),prod(生产)这几种环境。
每套环境的数据库配置以及项目配置或多或少是存在一些差异的,针对上诉情况 所以,本文就要探讨一下 项目中如何切换对应的配置文件并启动…
方式一:yml中指定
1.修改配置文件
SpringBoot项目默认配置文件在src/main/resources下的 application.properties
个人习惯使用YML格式,所以修改项目名文application.yml
将此文件为项目启动配置主文件
配置文件内容如下
spring:
application:
name: springboot-profile
profiles:
active: dev配置文件解释:
创建一个application名为springboot-profile 配置环境为 dev 环境 那么在启动时就会加载application-dev.yml 这个配置文件
2.创建不同环境的application.yml

如果想要更换其他环境 ,如test测试环境 只需要在主配置文件 application.yml中修改 active: dev 为 active: test 那么项目在启动时就会加载application-test.yml配置文件
方式二:maven 执行对应命令打包对应配置文件
(1)创建不同环境的application.yml

(2)在application.yml 主配置文件中添加如下属性
server:
port: 8080
spring:
application:
name: springboot-profile
profiles: #指定执行环境
active: @package.environment@(3)不同环境指定不同的配置属性
例如application-dev.yml
# 开发环境 author: name: leileidev
例如application-prod.yml
#生产线上环境 author: name: leileiprod
(4)pom.xml 添加依赖以及属性
profiles 与 dependencies 与build 平级
<!--配置环境的profile-->
<profiles>
<profile>
<id>dev</id>
<properties>
<package.environment>dev</package.environment>
</properties>
<!-- 是否默认 true表示默认-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<profile>
<id>test</id>
<properties>
<package.environment>test</package.environment>
</properties>
</profile>
<profile>
<!-- 生产环境 -->
<id>prod</id>
<properties>
<package.environment>prod</package.environment>
</properties>
</profile>
</profiles>
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>application.yml</include>
<include>application-${package.environment}.yml</include>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>(5)指定环境打包
进入项目目录下 执行
mvn clean install -P dev
则会打包application.yml与 application-dev.yml在打包文件 target中
打包 test
mvn clean install -P test
打包 prod
mvn clean install -P prod
idea 中操作如下:

出现 build success 则说明打包成功

运行对应jar 包测试

也可创建一个简单控制层进行测试
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>@RestController
@RequestMapping("profile")
public class TestProfileController {
@Value("${author.name}")
private String name;
@GetMapping("/port")
public String getPort() {
return name;
}
}
到此 !
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
