SpringBoot配置多环境,dev,prod,test

news/2025/2/22 15:56:42/

springboot与maven配置多环境

开发任何的项目至少都需要三个环境,分别是
开发环境
测试环境
生产环境
环境不同意味着配置也是不相同的,比如数据库,文件路径等等配置,那么如何解决这么多环境整合在一起既不混乱又能很优雅呢?
解决方案就是多环境整合,在打包的时候,使用命令来区分环境
mvn clean install package -P dev
这个-P就是指定配置环境的

1. application.yml作为主配置文件

里面定义了需要激活的环境,如下:

spring:profiles:active: @profile.active@

2. application-*.yml这三个配置文件就是各自环境的配置

比如application-dev.yml(开发环境)文件的配置如下:


server:port: 8080servlet:context-path: /api-front
spring:redis:database: 2host: xxxxpassword: xxxx

3.POM文件配置

要和Maven整合当然少不了pom文件的配置,maven中也提供了profile的支持,每个profile能够定义自己的一些依赖和配置和激活条件,profile配置如下:

<!--定义三种开发环境--><profiles><profile><!--不同环境的唯一id--><id>dev</id><activation><!--默认激活开发环境--><activeByDefault>true</activeByDefault></activation><properties><!--profile.active对应application.yml中的@profile.active@--><profile.active>dev</profile.active></properties></profile><!--测试环境--><profile><id>test</id><properties><profile.active>test</profile.active></properties></profile><!--生产环境--><profile><id>prod</id><properties><profile.active>prod</profile.active></properties></profile></profiles>

maven中的profile的激活条件还可以根据jdk、操作系统、文件存在或者缺失来激活。如下

<!--activation用来指定激活方式,可以根据jdk环境,环境变量,文件的存在或缺失--><activation><!--配置默认激活--><activeByDefault>true</activeByDefault><!--通过jdk版本--><!--当jdk环境版本为1.8时,此profile被激活--><jdk>1.8</jdk><!--当jdk环境版本1.8或以上时,此profile被激活--><jdk>[1.8,)</jdk><!--根据当前操作系统--><os><name>Windows XP</name><family>Windows</family><arch>x86</arch><version>5.1.2600</version></os></activation></profile>

资源过滤

在进行生产环境打包的时候并不需要开发和测试环境的一些文件,这里我们可以进行资源的过滤,保留需要的配置和文件,同样是在pom文件中定义,如下:

	<build><resources><!--排除配置文件--><resource><directory>src/main/resources</directory><!--先排除所有的配置文件--><excludes><!--使用通配符,当然可以定义多个exclude标签进行排除--><exclude>application*.yml</exclude></excludes></resource><!--根据激活条件引入打包所需的配置和文件--><resource><directory>src/main/resources</directory><!--引入所需环境的配置文件--><filtering>true</filtering><includes><include>application.yml</include><!--根据maven选择环境导入配置文件--><include>application-${profile.active}.yml</include></includes></resource></resources></build>

上述配置主要分为两个方面,第一是先排除所有配置文件,第二是根据profile.active动态的引入配置文件。


http://www.ppmy.cn/news/48536.html

相关文章

Maven项目中出现【不再支持目标选项 1.5】的解决办法

1 快速解决【单项目】 本方法只适用于单个项目&#xff0c;新建项目使用maven还会出现问题。 在pom.xml配置&#xff1a; <properties><maven.compiler.source>11</maven.compiler.source><maven.compiler.target>11</maven.compiler.target>&l…

grpc实战-pb文件生成问题/空消息体问题

报错信息&#xff1a; proto: message pb.Empty is already registered See https://protobuf.dev/reference/go/faq#namespace-conflict 对比老版本的工具生成的xxxx.pb.go文件。import导入的proto链接不一样&#xff1a; 旧版本&#xff1a;import github.com/golang/proto…

C++篇 ---- 命名空间namespace

由于在c语言中在定义时可能会出现重命名现象&#xff0c;造成空间冲突&#xff0c;c语言中有命名冲突&#xff1a;1 和库冲突。2 互相之间的冲突&#xff0c;变量命名冲突。所以c中就有了对其改进的关键字namespace&#xff0c;针对重定义&#xff0c;解决空间冲突。 文章目录 …

数据库实验 | 第1关:建立和调用存储过程(不带输出参数的存储过程)

任务描述 本关任务&#xff1a; 该实验是针对数据表jdxx&#xff0c;该数据表有四个字段&#xff0c;分别是省份(sf)、城市(cs)、区县(qxmc)、街道(name)。 例如&#xff0c;查询天心区(qxmc)的所有字段的值结果如图所示 任务要求 建立存储过程 dqxx(in city varchar(10),i…

一篇文章讲清 SEO 最核心的内容

当今的数字营销时代&#xff0c;SEO是吸引用户流量的重要手段。SEO指的是搜索引擎优化&#xff0c;它是为了提高网站在搜索引擎结果页面上的排名而采取的一系列技术和策略。 当用户在搜索引擎中输入关键词时&#xff0c;搜索引擎会根据一定的算法对网站进行排名&#xff0c;并…

【Go】四、面向对象

文章目录 面向对象1、匿名字段2、接口&#xff08;❌&#xff09;2.1、类型与接口的关系2.2、空接口2.3、类型断言 面向对象 1、匿名字段 ​ go只提供类型而不写字段名的方式&#xff0c;也就是匿名字段&#xff0c;也称为嵌入字段 1、不写字段名&#xff0c;只给出类型 2、…

JavaScript如何删除css

我们在前端开发当中&#xff0c;常常需要动态地添加、修改或删除DOM元素和CSS样式。DOM和CSS都是前端开发中不可或缺的部分&#xff0c;而JavaScript作为一种脚本语言&#xff0c;可以对DOM和CSS进行操作。 本文将重点介绍如何使用JavaScript来删除CSS&#xff0c;包括以下几个…

数据结构与算法基础-学习-20-查找之散列表(HASH TABLE)

目录 目录 一、基本思想 二、术语 1、散列方法 2、散列函数 3、散列表 4、冲突 5、同义词 三、如何减少哈希冲突 四、构造散列函数需考虑的情况 五、散列函数的构造方法 1、直接定址法 2、除留余数法 六、如何处理哈希冲突 1、开地址法 2、拉链法 七、散列表查…