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

springboot + maven 使用资源占位符实现动态加载配置文件

第一步:Maven资源过滤(在pom.xml中启用资源过滤并定义runtime-profile变量)
- - 因为要使用证书,所以这里需要单独设置某些资源不过滤;
- - :不需要单独过滤,用第一个;需要单独过滤,用第二个。


<!-- 定义Profiles -->
<profiles><profile><id>dev</id><properties><runtime-profile>dev</runtime-profile></properties><activation><activeByDefault>true</activeByDefault> <!-- 默认激活 --></activation></profile><profile><id>pro</id><properties><runtime-profile>pro</runtime-profile></properties></profile>
</profiles><!-- maven打包插件  -->
<build><finalName>${project.artifactId}</finalName><resources><resource><directory>src/main/resources</directory><filtering>true</filtering> <!-- 开启过滤 --></resource></resources><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins>
</build>
<properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><org.bjyc.frameworks.version>0.0.1-SNAPSHOT</org.bjyc.frameworks.version><!-- 防止二进制文件被意外过滤 --><maven.resources.nonFilteredFileExtensions>p12,pfx,cer,keystore,jks</maven.resources.nonFilteredFileExtensions>
</properties><!-- maven打包插件  -->
<build><finalName>${project.artifactId}</finalName><!-- 关键资源过滤配置 --><resources><!-- 处理需要过滤的文本资源 --><resource><directory>src/main/resources</directory><filtering>true</filtering><includes><include>application*.properties</include><include>application*.yml</include><include>bootstrap*.properties</include><include>bootstrap*.yml</include></includes></resource><!-- 单独处理证书文件 - 关闭过滤 --><resource><directory>src/main/resources</directory><filtering>false</filtering> <!-- 确保二进制无损 --><includes><include>wxcert/*.p12</include></includes></resource><!-- 处理其他非过滤资源 --><resource><directory>src/main/resources</directory><filtering>false</filtering><excludes><exclude>wxcert/*.p12</exclude><exclude>application*.properties</exclude><exclude>application*.yml</exclude><exclude>bootstrap*.properties</exclude><exclude>bootstrap*.yml</exclude></excludes></resource></resources><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><!-- 激活 profile 配置 --><profiles><profile>${runtime-profile}</profile></profiles></configuration><executions><execution><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins><!-- 添加资源过滤扩展配置 --><pluginManagement><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-resources-plugin</artifactId><version>3.3.0</version><configuration><!-- 防止二进制文件被过滤 --><nonFilteredFileExtensions><nonFilteredFileExtension>p12</nonFilteredFileExtension><nonFilteredFileExtension>cer</nonFilteredFileExtension><nonFilteredFileExtension>keystore</nonFilteredFileExtension></nonFilteredFileExtensions></configuration></plugin></plugins></pluginManagement>
</build>

第二步:配置 YAML 文件

#application.yml
spring:profiles:active: '@runtime-profile@'  # Maven 资源过滤将替换此占位符
#bootstrap.yml
spring:profiles:active: '@runtime-profile@'  # 与 application.yml 保持一致

第三步:在 IDEA 中使用 Maven Profiles,勾选指定的文件,如:‘dev’或者‘pro’

在这里插入图片描述

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

相关文章:

  • Modstart 请求出现 Access to XMLHttpRequest at ‘xx‘
  • imx6ull-驱动开发篇9——设备树下的 LED 驱动实验
  • ubuntu的压缩工具zip的安装和使用
  • 【C++】类和对象1
  • 力扣106:从中序与后序遍历序列构造二叉树
  • 「PromptPilot 大模型智能提示词平台」—— PromptPilot × 豆包大模型 1.6:客户投诉邮件高效回复智能提示词解决方案
  • 工业级 CAN 与以太网桥梁:串口服务器CAN通讯转换器深度解析(上)
  • 【科研绘图系列】R语言绘制误差棒图
  • 姜 第四章 线性方程组
  • shmget等共享内存系统调用及示例
  • uniapp 类似popover气泡下拉框组件
  • Maven和Gradle在构建项目上的区别
  • uniapp Android App集成支付宝的扫码组件mPaaS
  • Linux驱动25 --- RkMedia音频API使用增加 USB 音视频设备
  • Linux驱动24 --- RkMedia 视频 API 使用
  • 技术文章推荐|解析 ESA 零售交易方案(技术分析+案例拆解)
  • 基于k8s环境下的pulsar常用命令(下)
  • JavaWeb02——基础标签及样式(黑马视频笔记)
  • 203.移除链表元素 707.设计链表 206.反转链表
  • 8.5 位|归并|递归
  • 腾讯云CodeBuddy AI IDE+CloudBase AI ToolKit打造理财小助手网页
  • C++ - 基于多设计模式下的同步异步日志系统(11w字)
  • 使用ProxySql实现MySQL的读写分离
  • 【模电笔记】—— 直流稳压电源——整流、滤波电路
  • C++返回值优化(RVO):高效返回对象的艺术
  • LINUX 85 SHElL if else 前瞻 实例
  • 解锁n8n:开启自动化工作流的无限可能
  • 数据挖掘,到底是在挖掘什么?
  • Leetcode-2080区间内查询数字的频率
  • 417页PDF | 2025年“人工智能+”行业标杆案例荟萃