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

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

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

在 pom.xml 中定义 Profiles

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

xml 复制代码
<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 中配置资源过滤:

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)可能提供了更直接的方式来处理资源过滤和重命名。

相关推荐
代码AI弗森14 小时前
一文理清楚“算力申请 / 成本测算 / 并发评估”
java·服务器·数据库
Java开发的小李15 小时前
SpringBoot + Redis 实现分布式 Session 共享(解决多实例登录状态丢失问题)
spring boot·redis·分布式
Old Uncle Tom15 小时前
OpenClaw 记忆系统 -- 记忆预加载
java·数据结构·算法·agent
小小小米粒15 小时前
Collection单列集合、Map(Key - Value)双列集合,多继承实现。
java·开发语言·windows
摇滚侠16 小时前
expdp 查看帮助
java·数据库·oracle
:12116 小时前
java基础
java·开发语言
曹牧17 小时前
Spring:@RequestMapping注解,匹配的顺序与上下文无关
java·后端·spring
daixin884817 小时前
cursor无法正常使用gpt5.5等模型解决方案
java·redis·cursor
韦禾水18 小时前
记录一次项目部署到tomcat的异常
java·tomcat
曦月合一18 小时前
树莓派安装jdk、tomcat、vnc、谷歌浏览器开机自启等环境配置
java·tomcat·树莓派