根据 Maven 的不同 profiles 来改变 Spring Boot 应用程序的配置

embedded/2024/11/19 16:21:13/

在 Maven 的 pom.xml 文件中,你可以定义多个 profiles,每个 profile 可以包含一组特定的配置属性。这些属性可以被传递到 Spring Boot 的 application.properties 或 application.yml 文件中,以便根据不同的环境(如开发、测试、生产)来调整配置。

下面是一个如何在 pom.xml 中定义 profiles,并在 application.properties 中引用这些属性的示例。

在 pom.xml 中定义 Profiles
首先,在 pom.xml 中定义不同的 profiles,例如开发(dev)和生产(prod)环境:

<profiles><profile><id>dev</id><properties><env.database.url>jdbc:mysql://localhost:3306/devdb</env.database.url><env.database.user>devuser</env.database.user><env.database.password>devpassword</env.database.password></properties></profile><profile><id>prod</id><properties><env.database.url>jdbc:mysql://production.server:3306/proddb</env.database.url><env.database.user>produser</env.database.user><env.database.password>prodpassword</env.database.password></properties></profile>
</profiles>

在 application.properties 中使用 Maven Filters
为了根据 Maven 的 profiles 动态地设置 application.properties 的值,你可以使用 Maven 的资源过滤功能。首先,你需要创建一个 application.properties 的模板文件,比如 src/main/resources/application.properties.template:

properties
spring.datasource.url= e n v . d a t a b a s e . u r l s p r i n g . d a t a s o u r c e . u s e r n a m e = {env.database.url} spring.datasource.username= env.database.urlspring.datasource.username={env.database.user}
spring.datasource.password=${env.database.password}
然后,在 pom.xml 中配置资源过滤:

<build><resources><resource><directory>src/main/resources</directory><filtering>true</filtering><includes><include>application.properties.template</include></includes><targetPath>${project.build.outputDirectory}/resources</targetPath><renaming><rename>application.properties.template,application.properties</rename></renaming></resource></resources>
</build>

注意:这里的配置可能需要根据你的项目结构和 Maven 版本进行调整。有些 Maven 插件(如 maven-resources-plugin)可能提供了更直接的方式来处理资源过滤和重命名。


http://www.ppmy.cn/embedded/138809.html

相关文章

机器学习3

六、朴素贝叶斯分类 背景知识&#xff1a;第三大点的第4点&#xff1a;概率 基础定义_数学概率中事件的定义-CSDN博客 1、条件概率 &#x1d443;(&#x1d434;|&#x1d435;)&#x1d443;(&#x1d434;∩&#x1d435;)/&#x1d443;(&#x1d435;) &#xff1a;A事件在…

一文速学---红黑树

文章目录 一、红黑树简介二、 红黑树特性三、红黑树插入3.1 红黑树为空3.2 父节点为黑色3.3 父节点为红色3.3.1 父亲和叔叔都是红色3.3.2 父节点为红色&#xff0c;叔叔节点为黑色3.3.2.1 父节点在左节点&#xff0c;插入节点在父亲左节点3.3.2.2 父节点在左节点&#xff0c;插…

树莓派(Raspberry Pi)picotool

树莓派&#xff08;Raspberry Pi&#xff09;picotool 安装直接安装从源码安装工具介绍显示信息保存程序二进制信息基本信息引脚完整信息 链接 安装 直接安装 在archlinux上&#xff0c;使用yay直接安装 yay -S picotool从源码安装 安装libusb sudo pacman -S libusb下载 …

SQL,力扣题目1369,获取最近第二次的活动

一、力扣链接 LeetCode_1369 二、题目描述 表: UserActivity ------------------------ | Column Name | Type | ------------------------ | username | varchar | | activity | varchar | | startDate | Date | | endDate | Date | -----…

云原生周刊:Istio 1.24.0 正式发布

云原生周刊&#xff1a;Istio 1.24.0 正式发布 开源项目推荐 Kopf Kopf 是一个简洁高效的 Python 框架&#xff0c;只需几行代码即可编写 Kubernetes Operator。Kubernetes&#xff08;K8s&#xff09;作为强大的容器编排系统&#xff0c;虽自带命令行工具&#xff08;kubec…

第十六届蓝桥杯模拟赛(第一期)-c++/c

前面填空参考https://blog.csdn.net/2301_76891851/article/details/143448411 后面大题code&#xff1a; 停车场停车 #include <bits/stdc.h> #define int long long using namespace std; int tmp; signed main() {int n;cin>>n;if(n<15)cout<<"…

使用 AWR 进行 Exadata 性能诊断

本文内容来自Oracle 2024年3月发布的白皮书&#xff1a;Exadata Performance and AWR: Exadata Performance Diagnostics with AWR 简介 本技术简介概述了如何将 Oracle AWR 功能与 Exadata 结合使用&#xff0c;从 Exadata 的角度&#xff08;standpoint&#xff09;监控和分…

飞凌嵌入式RK3576核心板已适配Android 14系统

在今年3月举办的RKDC2024大会上&#xff0c;飞凌嵌入式FET3576-C核心板作为瑞芯微RK3576处理器的行业首秀方案重磅亮相&#xff0c;并于今年6月率先量产发货&#xff0c;为客户持续稳定地供应&#xff0c;得到了众多合作伙伴的认可。 FET3576-C核心板此前已提供了Linux 6.1.57…