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

Intellij中Spring Boot资源文件夹未放入war/war_exploded却在production目录原因?

问题原因

这个production文件夹是Spring Boot Gradle插件的Profile资源自动分类特性生成的:当你在构建配置中激活了名为production的环境profile时,插件会默认将对应profile的专属资源归档到BOOT-INF/classes/production/子目录下,而非直接放在类路径根目录。而Spring Boot默认只会从类路径根目录扫描application.properties配置文件,因此会出现配置读取失败、应用无法正常启动的问题。你也可以检查build.gradle中是否有自定义sourceSets配置强制将production设为独立资源目录,这种情况也会生成对应子目录。

解决方案

可根据实际使用场景选择以下任意一种方案:

  • 方案1:禁用profile资源单独分组
    在build.gradle中添加如下配置,让production目录下的所有资源直接输出到类路径根目录:
    processResources {
        duplicatesStrategy = DuplicatesStrategy.INCLUDE
        eachFile { file ->
            if (file.relativePath.segments[0] == 'production') {
                file.relativePath = file.relativePath.substring(1)
            }
        }
    }
    
  • 方案2:修改启动参数扩展配置扫描路径
    启动应用时添加参数,让Spring Boot额外扫描production目录下的配置文件:
    java -jar 你的应用包名.jar --spring.config.location=classpath:/,classpath:/production/
    
  • 方案3:遵循Spring Boot配置命名规范
    不需要单独创建production子目录存放生产环境资源,所有配置直接放在src/main/resources根目录,将生产环境专属配置命名为application-production.properties即可。Spring Boot会自动根据激活的profile加载对应后缀的配置文件,不会出现路径识别问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 00:24:02