当前位置: 首页 > 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.dtcms.com/a/316462.html

相关文章:

  • 跳表和B+树的相似和区别 ***
  • Nginx 学习
  • UnityUI系统--GUI
  • PHP‑ORT扩展构建纯PHP机器学习的推荐系统
  • Redis协议数据迁移方式
  • 聚焦智能穿戴“下一代消费终端”之争,Meta/微美全息借AI+AR积淀定义行业未来
  • Tasks and Deadlines(Sorting and Searching)
  • 【人工智能-18】机器学习:决策树、随机森林
  • 什么情况下浮动IP(Floating IP)会“漂移”(Drift)
  • 浮动IP(Floating IP)的删除通常需要满足什么条件
  • 小程序点击菜单栏实现样式动态切换
  • 对于包含大量文件的程序的便捷makefile操作
  • RK3568 Linux驱动学习——字符设备驱动开发
  • windows内核研究(软件调试-内存断点)
  • 永磁同步电机无速度算法--具有电流测量误差鲁棒性的永磁同步电机无传感器控制的自适应广义复矢量观测器
  • 二叉树算法
  • 02-算法
  • Java后端高频面试题
  • EP02:【DL 第二弹】张量的索引、分片、合并以及维度调整
  • 如何选择正确的体育/电竞数据接口服务商?
  • 力扣148:排序链表
  • Android 开发中,HandlerThread、IntentService 和 AsyncTask区别对比
  • Pytorch基础入门2
  • C++面向对象编程基础:从类定义到封装机制详解
  • 【Linux网络编程】socket基础
  • 风丘助力混合动力汽车工况测试:精准采集整车信号解决方案
  • Datawhale AI夏令营 第三期 task2 稍微改进
  • P1026 [NOIP 2001 提高组] 统计单词个数
  • 计算机网络:详解路由器如何转发子网数据包
  • Java JDBC连接池深度解析与实战指南