微服务多项目基于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}
posted @ 2022-07-21 16:55  胡小华  阅读(808)  评论(0编辑  收藏  举报