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>
相关推荐
zhenxin01222 小时前
Spring Boot 3.x 系列【3】Spring Initializr快速创建Spring Boot项目
spring boot·后端·spring
oyzz1203 小时前
Spring EL 表达式的简单介绍和使用
java·后端·spring
后置的猿猴4 小时前
Spring 循环依赖
java·后端·spring
热爱Java,热爱生活4 小时前
浅谈Spring三级缓存
java·spring·缓存
shark22222227 小时前
Spring 的三种注入方式?
java·数据库·spring
hERS EOUS7 小时前
Spring Boot + Spring AI快速体验
人工智能·spring boot·spring
JAVA学习通7 小时前
LangChain4j 与 Spring AI 的技术选型深度对比:2026 年 Java AI 工程化实践指南
java·人工智能·spring
yaodong5188 小时前
Spring 中使用Mybatis,超详细
spring·tomcat·mybatis
splage8 小时前
Spring Cloud Data Flow 简介
后端·spring·spring cloud
zuowei28899 小时前
spring实例化对象的几种方式(使用XML配置文件)
xml·java·spring