在项目开发中可能会产生这样的需求,开发环境依赖于 A 包,测试环境依赖 B 包,生产环境依赖于 C 包。按照我们传统的思维会每个环境注释掉相应的包,然后再打包,一次两次操作还好,操作多了之后这样会很麻烦。
Maven 不同环境引用依赖 Maven 配置切换不同环境dev true dev com.allens.test allens-redis 1.0-SNAPSHOT org.springframework.boot spring-boot-devtools prod prod com.allens.test allens-redis 2.0-SNAPSHOT
我们可以在idea的Maven窗口中选中需要的profile环境,然后在lifecircle 中 clean install即可。
当然我们也可以使用maven 命令进行打包指定不同环境
## 开发环境打包 mvn clean package -P dev ## 测试环境打包 mvn clean package -P test ## 生产环境打包 mvn clean package -P pr最佳实践
① Springboot 热部署插件,在开发环境需要,在测试环境、预发环境、生产环境都是不需要的。
② OceanBase 不同版本适配的不同的操作系统,我们可以借助profile配置不同环境下配置不同的包来做到不同环境切换依赖。
和传统的部署方式不同,我们将配置文件放入到不同的目录,使用build>resource来在编译的时候,通过读取不同环境的profiles.active属性来获取不同环境目录下的配置打包到classpath目录中。
- 传统的配置方式
传统配置方式会将配置文件放到resources底下,然后给配置文件命名 application-${env}.yml来区分不同环境。在JVM参数中指定-Dspring.active.profiles=${env}或者在idea中:
或者在 bootstrap.yml 或者application.yml中指定默认的配置:
spring:
profiles:
active: ${env}
所有环境的配置都会打包到jar包中。
- maven通过编译打包确定环境配置
maven 配置只有需要的环境配置才会打包到jar包中
编译后的目录结构dev true dev 1.0.0-SNAPSHOT com.allens.test common-utils 1.0-SNAPSHOT org.springframework.boot spring-boot-devtools prod prod com.allens.test common-utils 1.0-SNAPSHOT src/main/resources src/main/config/${profiles.active} ./



