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

相关推荐
nbsaas-boot2 小时前
Go 语言中的集合体系:从语言设计到工程实践
开发语言·后端·golang
李日灐2 小时前
C++STL:deque、priority_queue详解!!:详解原理和底层
开发语言·数据结构·c++·后端·stl
yangminlei2 小时前
Spring Boot 实现 DOCX 转 PDF
开发语言·spring boot·python
麦兜*2 小时前
Spring Boot整合Swagger 3.0:自动生成API文档并在线调试
java·spring boot·后端
接着奏乐接着舞。2 小时前
Go 一小时上手指南:从零到运行第一个程序
开发语言·后端·golang
河码匠2 小时前
Django rest framework 自定义url
后端·python·django
计算机毕设指导62 小时前
基于微信小程序的咖啡店点餐系统【源码文末联系】
java·spring boot·微信小程序·小程序·tomcat·maven·intellij-idea
JaguarJack2 小时前
2026 年 PHP 8.4 依然重要:跳到 8.5 之前你该掌握的特性
后端·php·服务端
程序员爱钓鱼2 小时前
Node.js 博客系统实战(一):项目需求分析
前端·后端·node.js