Spring 配置文件动态读取pom.xml中的属性

需求:

配置文件中的 spring.profiles.active=${env}需要打包时动态绑定。

一、方案:

  1. 在pom.xml文件中配置启用占位符替换
xml 复制代码
 <profiles>
        <!-- 本地开发 -->
        <profile>
            <id>dev</id>
            <properties>
                <env>dev</env>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <!-- 其他环境 -->
 </profiles>
 <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
</build>

Maven 中 <filtering> 的默认值是 false。这意味着在复制资源文件时,Maven 不会对文件进行占位符替换(即过滤)。

  1. 在配置文件中配置 spring.profiles.active=@env@或者 spring.profiles.active=${env}
  2. 打包时选择环境 mvn clean package -Pprod
    • -P 参数用于激活 Maven 构建中的特定配置文件(profile)

二、自定义占位符

如果担心冲突,那么可以自定义占位符。

xml 复制代码
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.2.0</version>
            <configuration>
                <delimiters>
                    <delimiter>#{</delimiter>
                    <delimiter>}</delimiter>
                </delimiters>
                <useDefaultDelimiters>false</useDefaultDelimiters>
            </configuration>
   		</plugin>
    </plugins>
</build>
相关推荐
我的运维人生3 小时前
Spring Cloud微服务:构建现代应用的新基石
spring·spring cloud·微服务·运维开发·技术共享
A_aspectJ9 小时前
‌Spring MVC的主要组件有哪些?
java·spring·mvc
Slow菜鸟10 小时前
Spring 设计模式之装饰器模式
spring·设计模式·装饰器模式
鹿屿二向箔11 小时前
【毕业论文+源码】基于SSM(Spring + Spring MVC + MyBatis)的房屋租赁系统
spring·mvc·mybatis
A_aspectJ12 小时前
Spring 框架中都用到了哪些设计模式?
spring·设计模式·1024程序员节
AIGC绘画12 小时前
Spring微服务概述之spring cloud alibaba服务调用实践
java·spring·微服务
带刺的坐椅13 小时前
Spring SPI、Solon SPI 有点儿像(Maven 与 Gradle)
java·spring·solon·spi
武昌库里写JAVA14 小时前
【MySql】-0.1、Unbunt20.04二进制方式安装Mysql5.7和8.0
spring boot·spring·毕业设计·layui·课程设计
鱼跃鹰飞18 小时前
大厂面试真题-简单描述一下SpringBoot的启动过程
java·spring boot·后端·spring·面试
尘浮生20 小时前
Java项目实战II基于Spring Boot的小型诊疗预约平台(开发文档+数据库+源码)
java·开发语言·数据库·spring boot·后端·spring·课程设计