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

Gradle 6.x升级至8.x时同名资源文件自动重命名问题求助

Gradle 8.x同名文件自动加_1后缀的解决办法
  • 先明确你的文件是被哪个Gradle任务处理的
    运行./gradlew build --info,在日志里搜索带_1的文件名,旁边会显示处理该文件的任务名称(比如processResources、processTestResources或自定义任务)。如果是多模块项目,还要确认是根项目还是子项目的任务在处理。

  • 针对不同场景配置重复策略

    1. 文件在自定义资源目录下
      如果你的文件不在默认的src/main/resources,而是根目录下的自定义文件夹,需要先将这个目录加入资源集,再设置重复策略:

      sourceSets {
          main {
              resources {
                  // 替换为你的自定义目录路径
                  srcDirs += file("$projectDir/your-custom-folder")
                  // 可选策略:INCLUDE(保留最后一个)、EXCLUDE(保留第一个)、RENAME(默认加后缀)、FAIL(报错)
                  duplicatesStrategy = DuplicatesStrategy.INCLUDE
              }
          }
      }
      
    2. 文件对应标准任务但之前配置无效
      如果你之前只在根项目配置了processResources,但实际是子项目的任务在处理,要改成子项目配置或用subprojects块:

      // 多模块项目下给所有子项目统一配置
      subprojects {
          tasks.named("processResources") {
              duplicatesStrategy = DuplicatesStrategy.INCLUDE
          }
      }
      // 单个子项目直接在子项目build.gradle中配置
      tasks.named("processResources") {
          duplicatesStrategy = DuplicatesStrategy.INCLUDE
      }
      
    3. 非processResources任务处理的文件
      如果日志显示是其他任务(比如processTestResources),直接给对应任务配置:

      tasks.named("processTestResources") {
          duplicatesStrategy = DuplicatesStrategy.INCLUDE
      }
      
  • 补充说明
    Gradle 8.x默认对重复资源的处理策略从之前的宽松模式改为自动重命名(加_1后缀),因此必须显式指定你需要的策略。另外如果使用了Spring Boot这类插件,可能需要额外配置插件对应的资源处理逻辑,比如Spring Boot的bootJar任务也会处理资源,必要时也要给它设置重复策略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 23:05:05