在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. 最佳实践建议
- 分离配置:将不同环境的配置完全分离
- 敏感信息:生产环境密码等敏感信息不要放在代码库中
- 环境变量:考虑使用环境变量覆盖配置
- 配置优先级:了解Spring Boot配置加载顺序
这样配置后,你可以通过不同的Maven Profile来构建和运行不同环境的Spring Boot应用。