Spring Boot工具篇--使用yml多环境配置和创建多环境profile打包

1、yml多环境配置

Spring Boot中多环境配置文件名需要满足application-{profile}.yml的格式,其中{profile}对应你的环境标识;

application-dev 开发环境 application-test 测试环境 application-prod 生产环境

如果我们要激活某一个环境,只需要在 application.yml里:

bash 复制代码
spring:
  profiles:
    active: dev

此外,假设我们配置一些基本设置如:

application-dev.yml

复制代码
server:
  port: 9001

application-test.yml

bash 复制代码
server:
  port: 9002

application-prod.yml

bash 复制代码
server:
  port: 9003

此时,当我们去修改application.yml

  • 改为 dev
  • 改为 test
  • 改为 prod

2、创建多环境profile打包

通过上述步骤,可以轻松切换当前环境,不过也稍微有些麻烦,那是否有一些配置文件可以代替手动更改profile并且能创建多环境profile打包呢

答案是肯定的

pom.xml

pom文件中添加profile节点,并在build下的resources节点添加打包过滤的配置文件规则

XML 复制代码
   <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>
        <profile>
            <!--	生产环境		-->
            <id>prod</id>
            <properties>
                <profileActive>prod</profileActive>
            </properties>
        </profile>
    </profiles>
    
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>application-${profileActive}.yml</include>
                    <include>application.yml</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
        </resources>
    </build>

application.yml中配置一个动态属性进行占位,默认的分隔符是@属性名@,这个属性会通过maven打包时传入参数进行替换;

bash 复制代码
spring:
  profiles:
    active: @profileActive@

右侧的可视化选择环境,让工作更加变得高效;

maven 多环境打包

打包过滤配置文件规则也是用一个占位符进行占位,打包时也会通过maven传入参数进行替换。

  • 1、通过 -D命令传入属性值profileActive,如:
bash 复制代码
clean install -Dmaven.test.skip=true -DprofileActive=dev
  • 2、通过-P命令指定profile环境,如:
bash 复制代码
clean package -P prod

右侧可视化选择更加方便:

相关推荐
极限实验室几秒前
INFINI Labs 产品更新 | INFINI Console 1.29.6 发布 – 优化监控图表异常毛刺等
数据库·产品
先睡4 分钟前
优化MySQL查询
数据库·sql
一头生产的驴7 分钟前
java整合itext pdf实现自定义PDF文件格式导出
java·spring boot·pdf·itextpdf
YuTaoShao14 分钟前
【LeetCode 热题 100】73. 矩阵置零——(解法二)空间复杂度 O(1)
java·算法·leetcode·矩阵
zzywxc78717 分钟前
AI 正在深度重构软件开发的底层逻辑和全生命周期,从技术演进、流程重构和未来趋势三个维度进行系统性分析
java·大数据·开发语言·人工智能·spring
小张是铁粉20 分钟前
oracle的内存架构学习
数据库·学习·oracle·架构
专注API从业者25 分钟前
构建淘宝评论监控系统:API 接口开发与实时数据采集教程
大数据·前端·数据库·oracle
藏在歌词里28 分钟前
数据库-元数据表
数据库
小乌龟不会飞1 小时前
Ubuntu 安装 etcd 与 etcd-cpp-apiv3
数据库·etcd
YuTaoShao2 小时前
【LeetCode 热题 100】56. 合并区间——排序+遍历
java·算法·leetcode·职场和发展