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

build.gradle配置sourceSets的srcDir后IDE报红但构建正常如何解决?

问题根因

该问题是STS 4.11.1内置的Gradle插件与Gradle 7.1.1的sourceSets配置解析逻辑不兼容导致的,具体原因如下:

  • Gradle原生的srcDir配置是追加逻辑,你单独添加src/test/resources/sql作为测试资源目录时,默认的src/test/resources资源目录仍然生效,命令行构建时可以正常识别两层资源目录,不会触发冲突。
  • STS 4.11.1的Gradle插件对Gradle 7.x的sourceSets解析存在缺陷:它会同时将src/test/resources和其下的子目录src/test/resources/sql都标记为独立的资源根目录,但IDE内置的Java项目校验规则不允许一个资源根目录是另一个资源根目录的子目录,因此会抛出冲突错误,显示红叉。
  • 部分场景下还会触发资源重复索引问题:IDE会认为同一份资源文件可能被两个资源根目录同时索引,触发重复资源的校验报错。

解决方案

你可以根据自身需求选择对应方案解决:

  • 若只是需要把src/test/resources/sql下的文件作为测试资源,不需要额外配置:默认src/test/resources下的所有内容都会被自动识别为测试资源,直接删除多余的srcDir配置即可。
  • 若确实需要单独指定sql目录为唯一测试资源目录,将配置改为覆盖逻辑即可避免冲突:
    sourceSets {
        test {
            resources {
                srcDirs = ["src/test/resources/sql"]
            }
        }
    }
    
  • 升级STS到4.15及以上版本,新版本内置的Gradle插件已经修复了Gradle 7.x版本的sourceSets解析兼容性问题。
  • 若不想升级STS,也可以手动在项目属性->Java Build Path中删除重复标记的src/test/resources/sql资源目录配置,临时屏蔽报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 00:42:02