正常项目开发有:开发环境、测试环境、预生产环境,正式环境。存在一个套代码,运行多套环境需求,比较极端情况是,一套代码被销售很多套,部署很多套,存在很多套线上环境,需要打包部署, 这里讨论是,不使用三方的配置中间件,比如Nacos,Eureka等,想实现一套比较优秀【安全,方便兼顾】解决方案.
通过springboot提供的配置spring.profiles.actvie,在项目启动的时候,指定环境启动, 例子:java -jar -Dspring.profiles.active=pro demo.jar
通过maven profiles实现,打包的时候指定环境打包,并且过滤掉其他环境配置,打包命令: mvn clean package -P pro
mvn clean package
java -jar -Dspring.profiles.active=pro xxx.jar
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.1.0.RELEASEversion>
parent>
<profiles>
<profile>
<id>devid>
<properties>
<profiles.active>devprofiles.active>
<modifier>-devmodifier>
properties>
<activation>
<activeByDefault>trueactiveByDefault>
activation>
profile>
<profile>
<id>testid>
<properties>
<profiles.active>testprofiles.active>
<modifier>-testmodifier>
properties>
profile>
<profile>
<id>proid>
<properties>
<profiles.active>proprofiles.active>
<modifier>-promodifier>
properties>
profile>
profiles>
<build>
<resources>
<resource>
<directory>src/main/resourcesdirectory>
<filtering>truefiltering>
<excludes>
<exclude>application-*.ymlexclude>
excludes>
resource>
<resource>
<directory>src/main/resourcesdirectory>
<filtering>truefiltering>
<includes>
<include>application-${profiles.active}.ymlinclude>
includes>
resource>
resources>
build>
spring:
profiles:
active: @profiles.active@
mvn clean package -P pro
target/classes
目录下是否只有对应的环境配置欢迎大家,留言讨论,记住前提是不使用三方的配置中间件,轻量级解决方案,能做到动态切换环境,且保证配置安全性的方案,目前我觉得方案比较完美,多次打包的缺点,可以通过构建工具【jenkins】解决痛点