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

相关推荐
咖啡教室4 小时前
java日常开发笔记和开发问题记录
java
咖啡教室4 小时前
java练习项目记录笔记
java
鱼樱前端4 小时前
maven的基础安装和使用--mac/window版本
java·后端
RainbowSea5 小时前
6. RabbitMQ 死信队列的详细操作编写
java·消息队列·rabbitmq
RainbowSea5 小时前
5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明
java·消息队列·rabbitmq
李少兄7 小时前
Unirest:优雅的Java HTTP客户端库
java·开发语言·http
此木|西贝7 小时前
【设计模式】原型模式
java·设计模式·原型模式
可乐加.糖7 小时前
一篇关于Netty相关的梳理总结
java·后端·网络协议·netty·信息与通信
s9123601017 小时前
rust 同时处理多个异步任务
java·数据库·rust
9号达人7 小时前
java9新特性详解与实践
java·后端·面试