微服务多项目基于Maven实现profiles统一环境配置
1.背景介绍
在我们微服务开发过程中,有大大小小的项目全部基于整体的项目开发,在打包或者单个服务进行本地测试时,如果需要切换环境,需要一个个配置profiles是哪个环境生效。单个微服务配置还比较轻松,但是微服务个数多了后,一个一个配置就比较麻烦了
spring:
profiles:
active:dev
这里提供若依开源框架的微服务版本项目结构提供参考,我们发现单个微服务都是一个个配置项目当前的生效环境
2.解决方案
我们可以基于Maven实现顶层父Pom全局配置properties参数
1.首先基于顶层父Pom配置配置profile提供具体变量的properties参数,这里我们可以全局配置一些项目环境,比如设备地址,公告项目依赖的key
<!-- 环境 -->
<profiles>
<!-- 开发 -->
<profile>
<id>local</id>
<activation>
<!--默认激活配置-->
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profile.name>local</profile.name>
<!--服务发现地址-->
<nacos.server-addr>129.211.85.75:8848</nacos.server-addr>
</properties>
</profile>
</profiles>
2.开启父Pom Maven Resoures扫描
<build>
<resources>
<!-- 先指定 src/main/resources下所有文件及文件夹为资源文件 -->
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
</plugin>
<plugin>
<!--打包跳过测试-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
3.具体微服务配置环境时采用变量方式配置,即可实现全局的环境配置变更
server:
port: 6000
spring:
profiles:
active: ${profile.name}
spring:
application:
name: service-a
cloud:
#nacos配置
nacos:
config:
server-addr: ${nacos.server-addr}
discovery:
metadata:
name: 网关服务
server-addr: ${nacos.server-addr}