当前位置: 首页 > news >正文

springboot项目通过maven的profile功能实现通过不同文件夹的方式来组织不同环境配置文件

写在前面

本文看下springboot项目如何通过文件夹的方式来组织不同环境配置文件。

1:正文

一般的我们写springboot项目时配置文件是这个样子的:

appliction.yaml --> 通过spring.profiles.active=xxx来激活某个指定后缀的配置文件
application-evn1.yml
application-evn2.yml
application-evn3.yml

上面不同环境的配置放在了不同的配置文件中。接着,随着项目的增大,越来越多的功能和中间件会被引入,自然的每个文件配置的内容会越来越多,这个时候为了方便维护我们会通过拆分成多个文件的方式来解决这个问题,此时就变成了这样:

appliction.yaml --> 通过spring.profiles.active=xxx来激活某个指定后缀的配置文件application-evn1-mq.yml
application-evn1-auth.yml
application-evn1-mysql.ymlapplication-evn2-mq.yml
application-evn2-auth.yml
application-evn2-mysql.ymlapplication-evn3-mq.yml
application-evn3-auth.yml
application-evn3-mysql.yml

这个时候包括主配置文件在内我们就有了10个配置文件在一起堆着,当然实际的情况配置文件的数量要比这个还要多,要改一个配置找都得找半天啦!如何解决这个问题?可以考虑再加一层文件夹,每个文件夹放一个环境的配置文件,这样就能很快定位到具体的环境,进而找到对应的配置文件进行修改,也就是变成这样子:

appliction.yaml --> 通过spring.profiles.active=xxx来激活某个指定后缀的配置文件evn1(文件夹):application-evn1-mq.ymlapplication-evn1-auth.ymlapplication-evn1-mysql.ymlevn2(文件夹):application-evn2-mq.ymlapplication-evn2-auth.ymlapplication-evn2-mysql.ymlevn3(文件夹):application-evn3-mq.ymlapplication-evn3-auth.ymlapplication-evn3-mysql.yml

想要实现这种效果,我们需要依赖于maven提供的profile来做,首先配置如下:

 <profiles><profile><!-- 本地开发环境 --><id>xx</id><properties><profiles.active>xx</profiles.active><maven.test.skip>true</maven.test.skip></properties><activation><activeByDefault>true</activeByDefault></activation></profile><profile><!-- 本地开发环境 --><id>dev</id><properties><profiles.active>dev</profiles.active><maven.test.skip>true</maven.test.skip></properties><activation><activeByDefault>false</activeByDefault></activation></profile>
</profiles><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>2.3.1.RELEASE</version><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins><resources><resource><directory>src/main/resources</directory><!-- 资源根目录排除各环境的配置,防止在生成目录中多余其它目录 --><excludes><exclude>xx/*</exclude><exclude>dev/*</exclude></excludes></resource><resource><directory>src/main/resources/${profiles.active}</directory></resource></resources>
</build>

这其实就是maven的profile功能,配置后在maven的视图中就可以看到相关的profile了:
在这里插入图片描述
这我们勾选谁,就会加载哪个文件下的配置信息了,比如我们其中xx:
在这里插入图片描述

如果是在测试环境或者是生产环境,则就可以这样来做CICD,比如dev:

D:\\programs\\mvn363\\apache-maven-3.6.3-bin\\apache-maven-3.6.3\\bin\\mvn clean package -Pdev

如下就是打出的jar包,是个fat jar,直接运行就可以了:
在这里插入图片描述

所以借助于idea工具,在本地开发的时候,只需要通过ui操作就可以切换不同的profile了,当然通过maven命令也是可以的。

写在后面

参考文章列表

SpringBoot不同环境加载不同配置文件 。

maven中profiles使用详解 。

http://www.lryc.cn/news/459205.html

相关文章:

  • GAN(Generative Adversarial Nets)
  • linux下使用mpi求自然数和
  • WebGl学习使用attribute变量绘制一个水平移动的点
  • 机器学习四大框架详解及实战应用:PyTorch、TensorFlow、Keras、Scikit-learn
  • linux源码安装slurm以及mung和openssl
  • 分享蓝牙耳机A2DP音频卡顿原因及解决思路
  • Mac 下编译 libaom 源码教程
  • 【成品设计】基于Arduino平台的物联网智能灯
  • 安装和配置k8s可视化UI界面dashboard-1.20.6
  • VLAN:虚拟局域网
  • 利用可解释性技术增强制造质量预测模型
  • FlexMatch: Boosting Semi-Supervised Learning with Curriculum Pseudo Labeling
  • Spring Cloud 3.x 集成eureka快速入门Demo
  • 线性代数 矩阵
  • 【C语言】使用结构体实现位段
  • univer实现excel协同
  • JavaScript进阶笔记--深入对象-内置构造函数及案例
  • 网络爬虫自动化Selenium模拟用户操作
  • 尚硅谷rabbitmq 2024 流式队列2024指定偏移量 第55节答疑
  • NSSCTF-WEB-pklovecloud
  • 深入Postman- 自动化篇
  • react-JSX
  • 深度对比:IPguard与Ping32在企业网络管理中的应用
  • AI测试之 TestGPT
  • JavaEE-进程与线程
  • JAVA软开-面试经典问题(6)-equals与hashcode方法
  • 计算机网络(以Linux讲解)
  • 计算机网络基本架构知识点
  • GES DISC 的 ATMOS L2 潜在温度网格上的痕量气体,固定场格式 V3 (ATMOSL2TF)
  • MLCC贴片电容不同材质区别:【及电容工作原理】