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应用。

相关推荐
GetcharZp1 小时前
抛弃低效SSH!这套Ansible+Web可视化神器,让你天天准点下班!
后端
weixin_446260854 小时前
HACO:面向动态部署环境的对冲式智能计算可靠多智能体调度框架
后端·python·flask
ttwuai6 小时前
Cursor 生成 CRUD 后,Go 后台接口别只测 200:JWT、RBAC 和 tenant_id 怎么验
开发语言·后端·golang
用户8356290780516 小时前
Python 实现 Excel 页面布局与打印设置自动化
后端·python
用户9931441579846 小时前
微服务框架中获取用户信息
后端
xuanWb6 小时前
手写一个 LLM API 网关:Anthropic 与 OpenAI 协议转换的完整实现
后端
苍何6 小时前
给 Codex 换皮肤这门生意,被我开源了
后端
用户8356290780516 小时前
Python 实现 Excel 命名范围(Named Range)的创建与管理
后端·python
程序员David6 小时前
我让 Claude 从架构文档一路干到代码,踩了三个坑才摸清边界
后端