You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中SPRING_PROFILES_ACTIVE不生效的排查与修复

Spring Boot激活配置文件失败问题排查与修复

问题原因

  • Maven Shade插件配置不完整:使用Shade插件打包Spring Boot应用时,若未配置Spring Boot所需的资源转换和主类指定,会破坏fatjar的结构,导致Spring Boot无法正确读取环境变量或加载profile配置。
  • 环境变量传递方式兼容性问题:部分shell环境(如Windows cmd)不支持SPRING_PROFILES_ACTIVE=local java ...这种前置环境变量的写法,导致变量未被应用程序读取。
  • 配置文件命名不规范:若对应profile的配置文件未遵循application-{profile}.properties的命名规则,Spring Boot无法识别并关联到指定profile,也会触发默认profile的提示。

修复方法

1. 完善Maven Shade插件配置

在pom.xml中补充Shade插件的Spring Boot相关转换配置,确保打包后的jar符合Spring Boot的fatjar规范:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.4.1</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <transformers>
                    <!-- 指定你的Spring Boot启动类全路径 -->
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                        <mainClass>com.your.package.TdApiApplication</mainClass>
                    </transformer>
                    <!-- 合并Spring Boot的配置元数据,避免资源冲突 -->
                    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                        <resource>META-INF/spring.handlers</resource>
                    </transformer>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                        <resource>META-INF/spring.schemas</resource>
                    </transformer>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>

2. 调整profile激活方式

  • 使用系统属性传递(推荐,兼容性强):
    执行命令时通过-Dspring.profiles.active参数指定激活的profile:
    java -ea -Dspring.profiles.active=local -jar target/td-api-1.0-SNAPSHOT.jar
    
  • 适配shell环境的环境变量写法:
    • Linux/macOS(bash/zsh):若原写法不生效,可先导出变量再执行:
      export SPRING_PROFILES_ACTIVE=local
      java -ea -jar target/td-api-1.0-SNAPSHOT.jar
      
    • Windows(PowerShell):使用环境变量赋值语法:
      $env:SPRING_PROFILES_ACTIVE='local'; java -ea -jar target/td-api-1.0-SNAPSHOT.jar
      
    • Windows(cmd):使用set命令设置变量:
      set SPRING_PROFILES_ACTIVE=local
      java -ea -jar target/td-api-1.0-SNAPSHOT.jar
      

3. 检查配置文件命名

确保src/main/resources目录下的profile配置文件命名为application-local.properties和application-prod.properties,Spring Boot会自动匹配对应profile的配置内容。

内容的提问来源于stack exchange,提问作者morpheus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 01:55:34