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开发中的@EnableWebMvc注解和WebMvcConfigurer接口
java·开发语言·spring boot·spring·tomcat·maven·idea
A懿轩A6 小时前
【Maven 构建工具】从零到上手 Maven:安装配置 + IDEA 集成 + 第一个项目(保姆级教程)
java·maven·intellij-idea
野犬寒鸦7 小时前
从零起步学习并发编程 || 第一章:初步认识进程与线程
java·服务器·后端·学习
我爱娃哈哈7 小时前
SpringBoot + Flowable + 自定义节点:可视化工作流引擎,支持请假、报销、审批全场景
java·spring boot·后端
韩师学子--小倪8 小时前
SpringBoot 优雅停服
spring boot·tomcat
李梨同学丶9 小时前
0201好虫子周刊
后端
思想在飞肢体在追9 小时前
Springboot项目配置Nacos
java·spring boot·后端·nacos
JavaGuide11 小时前
推荐一个基于 Spring Boot 4.0 + Java 21 + Spring AI 2.0 的大模型项目!
java·spring boot·spring
Loo国昌11 小时前
【垂类模型数据工程】第四阶段:高性能 Embedding 实战:从双编码器架构到 InfoNCE 损失函数详解
人工智能·后端·深度学习·自然语言处理·架构·transformer·embedding
小马爱打代码12 小时前
Spring Boot :使用 Spring Cache 注解方式集成 Redis
spring boot·redis·spring