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

相关推荐
哈皮Superman11 分钟前
【Research】MagicFuzzer: Scalable deadlock detection for large-scale applications
java·开发语言·数据库
问道飞鱼17 分钟前
【微服务组件】Springboot结合Dubbo实现RPC调用
spring boot·微服务·rpc·dubbo
I'm Jie1 小时前
(二)Gradle 依赖仓库及安全凭证配置
java·spring boot·spring·gradle·maven
牢七1 小时前
CATWIFI
java
信码由缰1 小时前
单体架构中的事件驱动架构:Java应用程序的渐进式重构
java
初学小白...1 小时前
实现Runnable接口
java·开发语言
李少兄2 小时前
记一次 Spring Boot 项目中 Redis 工具类的重构实践
spring boot·redis·重构
墨着染霜华2 小时前
Java Optional orElse orElseGet orElseThrow()
java
czhc11400756632 小时前
JAVA1026 方法;类:抽象类、抽象类继承;接口、接口继承 Linux:Mysql
java·linux·mysql
一 乐2 小时前
宠物管理|宠物店管理|基于SSM+vue的宠物店管理系统(源码+数据库+文档)
java·前端·数据库·vue.js·论文·毕设·宠物