通过Maven自动切换开发/测试环境

参考文章:Maven实现多环境配置切换

1. 问题描述

   开发环境、测试环境、生产环境--------我们的软件在不同的环境中,系统参数和配置可能会不一样,比如数据源配置、日志文件配置、以及一些软件运行过程中的基本配置,那每次我们将软件部署到不同的环境时,都需要修改相应的配置文件?Maven提供了一种方便的解决这种问题的方案,就是profile功能。

2. 定义多环境配置文件

  • 在src/main/resources下新建配置文件(yml/yaml),如下表所示:
profile文件名配置文件内容
全局application.yaml项目统一配置
testapplication-test.yaml本地测试环境
devapplication-dev.yaml线上开发环境
prodapplication-prod.yaml生产环境
  • 完成后的目录结构图:

    image-20210125153321772

3. 修改Maven pom配置

3.1 添加profiles配置

  • 每一个profile子节点代表一个环境,id代表maven部署打包时指定的环境参数
  • activeByDefault节点指定当前环境是否是默认环境
  • 核心是在编译过程中,读取不同的配置文件**${profileActive}**,然后再由spring去读取参数配置
<!--profiles配置-->
<profiles>
    <!--开发环境 -->
    <profile>
        <id>dev</id>
        <properties>
            <profileActive>dev</profileActive>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <!--本地环境 -->
    <profile>
        <id>test</id>
        <properties>
            <profileActive>test</profileActive>
        </properties>
    </profile>
</profiles>

3.2 添加build配置

  • application-${profileActive}.yaml 指定当前环境的配置文件,位于src/main/resources目录下
  • 若存在多个配置文件,需一一添加上。
<build>
	<!--Resource文件编译配置-->
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <!--设置资源排除-->
            <excludes>
                <exclude>application*.yaml</exclude>
            </excludes>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>application-${profileActive}.yaml</include>
                <include>application.yaml</include>
                <!--附上resources目录下的其它配置-->
                <include>logback.xml</include>
            </includes>
            <filtering>true</filtering>
        </resource>
    </resources>
    
	<!--默认maven编译配置-->
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
    
</build>

3.3 定义运行参数

  • 在全局配置文件application.yaml中定义配置文件变量(来源于profile里的标签),如图所示:

image-20210125164142846

4. 指定运行环境

4.1 本地运行

  • 本地测试时,在Maven视图选择当前的profile:

    image-20210125154426960

4.2 云端编译

  • 发布到云端开发环境时,使用以下命令打包(结尾加上 -P dev),会自动将@profileActive@替换为dev:

    mvn clean package -DskipTests=true -U -P dev
    

注:采用Jenkins部署时,若存在多种环境,可采用【参数化构建/选项参数】进行自动化地配置。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值