springboot配置maven激活配置文件

在Spring Boot项目中,可以通过Maven配置来激活不同的配置文件(profiles)。以下是几种常见的配置方式:

1. 基础配置文件结构

首先,在 src/main/resources 目录下创建不同环境的配置文件:

复制代码
src/main/resources/
├── application.properties          # 主配置文件
├── application-dev.properties      # 开发环境
├── application-test.properties     # 测试环境
└── application-prod.properties     # 生产环境

2. Maven Profile配置

pom.xml 中配置Maven profiles:

xml 复制代码
<project>
    <!-- 其他配置 -->
    
    <profiles>
        <!-- 开发环境 -->
        <profile>
            <id>dev</id>
            <properties>
                <activatedProperties>dev</activatedProperties>
            </properties>
            <activation>
                <!-- 默认激活开发环境 -->
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        
        <!-- 测试环境 -->
        <profile>
            <id>test</id>
            <properties>
                <activatedProperties>test</activatedProperties>
            </properties>
        </profile>
        
        <!-- 生产环境 -->
        <profile>
            <id>prod</id>
            <properties>
                <activatedProperties>prod</activatedProperties>
            </properties>
        </profile>
    </profiles>
</project>

3. 配置文件过滤

3.1 在 pom.xml 中配置资源过滤:

xml 复制代码
<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.yml</include>
            </includes>
        </resource>
    </resources>
    
    <!-- 使用Maven属性替换占位符 -->
    <filters>
        <filter>src/main/resources/application-${activatedProperties}.properties</filter>
    </filters>
</build>

4. 通过Spring Boot配置

4.1 在 application.properties 中指定激活的profile:

properties 复制代码
# 主配置文件
spring.profiles.active=@activatedProperties@

4.2 或者使用YAML格式:

yaml 复制代码
# application.yml
spring:
  profiles:
    active: @activatedProperties@

5. 使用Maven命令激活

5.1 打包时指定profile:

bash 复制代码
# 打包使用开发环境
mvn clean package -Pdev

# 打包使用测试环境
mvn clean package -Ptest

# 打包使用生产环境
mvn clean package -Pprod

5.2 运行应用时指定:

bash 复制代码
# 方式1:通过Maven运行
mvn spring-boot:run -Dspring-boot.run.profiles=dev

# 方式2:使用jar运行时指定
java -jar target/your-app.jar --spring.profiles.active=prod

6. 高级配置示例

6.1 完整 pom.xml 示例:

xml 复制代码
<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    
    <properties>
        <java.version>11</java.version>
        <activatedProperties>dev</activatedProperties>
    </properties>
    
    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <activatedProperties>dev</activatedProperties>
                <server.port>8080</server.port>
                <datasource.url>jdbc:mysql://localhost:3306/dev_db</datasource.url>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        
        <profile>
            <id>prod</id>
            <properties>
                <activatedProperties>prod</activatedProperties>
                <server.port>80</server.port>
                <datasource.url>jdbc:mysql://prod-server:3306/prod_db</datasource.url>
            </properties>
        </profile>
    </profiles>
    
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <delimiters>
                        <delimiter>@</delimiter>
                    </delimiters>
                    <useDefaultDelimiters>false</useDefaultDelimiters>
                </configuration>
            </plugin>
        </plugins>
        
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
</project>

7. 多环境YAML配置

7.1 使用YAML多文档格式:

yaml 复制代码
# application.yml
spring:
  profiles:
    active: @activatedProperties@
---
# 开发环境配置
spring:
  config:
    activate:
      on-profile: "dev"
server:
  port: 8080
datasource:
  url: jdbc:mysql://localhost:3306/dev_db
---
# 生产环境配置
spring:
  config:
    activate:
      on-profile: "prod"
server:
  port: 80
datasource:
  url: jdbc:mysql://prod-server:3306/prod_db

8. IDE中激活Profile

8.1 IntelliJ IDEA:

  • 打开Maven工具栏
  • 选择需要的Profile
  • 或者编辑运行配置,在VM Options中添加:-Dspring.profiles.active=dev

8.2 Eclipse:

  • 右键项目 → Maven → Select Maven Profiles
  • 选择需要激活的Profile

9. 最佳实践建议

  1. 分离配置:将不同环境的配置完全分离
  2. 敏感信息:生产环境密码等敏感信息不要放在代码库中
  3. 环境变量:考虑使用环境变量覆盖配置
  4. 配置优先级:了解Spring Boot配置加载顺序

这样配置后,你可以通过不同的Maven Profile来构建和运行不同环境的Spring Boot应用。

相关推荐
武子康6 小时前
Java-03 深入浅出 MyBatis 增删改查与映射配置详解
java·后端
百度Geek说6 小时前
网盘存量代码迁移实战:我们如何用三层架构管住 AI 的输出
后端
Maiko Star7 小时前
* SpringBoot整合LangChain4j
java·spring boot·后端·langchain4j
明月_清风8 小时前
Go语言空接口与类型断言完全指南:从"万能容器"到"类型还原"
后端·go
每天进步一点_JL8 小时前
Spring Boot 缓存体系
后端
百珏8 小时前
[灰度发布]:全链路透传组件:APM、自研方案与 Java Agent 的实现取舍
后端·设计模式·架构
正在走向自律8 小时前
DISTINCT 去重查询为什么这么慢?聊聊我能理解的几种优化思路
后端
OpsEye8 小时前
数据库连接池爆了,这3个命令能救你一次
运维·数据库·后端
绝知此事8 小时前
【产品更名】通义灵码升级为 Qoder CN:AI 编码助手新时代,附大模型收费与 Spring Boot 支持全对比
人工智能·spring boot·后端·idea·ai编程
~|Bernard|9 小时前
GO语言中哪些类型是可比较类型的(==和!=)
开发语言·后端·golang