spring cloud nacos 配置多环境打包
一、前言
- 因需要将项目打包给N多第三方,他们有各自的nacos地址,又需要实现代码无侵入(配置文件存在很多版本如 application-tocdev.yml、application-tobdev.yml等等。打好的jar包给toc的不能包含tob的配置)。
- 其中配置文件就是指向的nacos地址,具体配置放于nacos中。
- 而笔者在搭建过程遇到很多坑,特意记录下,有遇到相同问题的道友可直接借鉴。
二、方案1 使用application-**.yml与实现多环境配置 这种是完全行不通的,只要使用了nacos配置中心,就不能使用此种方式实现多环境配置 看下面官方说明: 有道友可能会问 为什么必须使用bootstrap.properties/yml? 官方并没有解释清楚,个人理解 bootstrap.yml 由 父Spring ApplicationContext加载,bootstrap.yml是系统级的配置,application.yml是应用级的配置,也就是bootstrap.yml先于application.yml加载。而在使用spring cloud 时,nacos作为配置中心,一些配置都需要从nacos中获取,这就使得必须提前引导配置nacos地址,理所应当由bootstrap.yml来加载nacos相关配置。
三、方案2 使用maven管理,新增bootstrap.yml,配置nacos地址。通过读取pom.xml定义的变量。 虽然可以行得通,不过与需求不太符合,打包后的jar包中,pom.xml存在其他nacos地址。
四、终极方案3 在bootstrap系统级配置中,配置nacos多个地址,并配合maven构建时打包对应的配置文件
最后maven 命令如下
clean compile package install -Dmaven.test.skip=true -D profiles.active=huafaprod
最终jar内容符合预期
|