Gradle 6.x升级至8.x时同名资源文件自动重命名问题求助
Gradle 8.x同名文件自动加_1后缀的解决办法
先明确你的文件是被哪个Gradle任务处理的
运行./gradlew build --info,在日志里搜索带_1的文件名,旁边会显示处理该文件的任务名称(比如processResources、processTestResources或自定义任务)。如果是多模块项目,还要确认是根项目还是子项目的任务在处理。针对不同场景配置重复策略
文件在自定义资源目录下
如果你的文件不在默认的src/main/resources,而是根目录下的自定义文件夹,需要先将这个目录加入资源集,再设置重复策略:sourceSets { main { resources { // 替换为你的自定义目录路径 srcDirs += file("$projectDir/your-custom-folder") // 可选策略:INCLUDE(保留最后一个)、EXCLUDE(保留第一个)、RENAME(默认加后缀)、FAIL(报错) duplicatesStrategy = DuplicatesStrategy.INCLUDE } } }文件对应标准任务但之前配置无效
如果你之前只在根项目配置了processResources,但实际是子项目的任务在处理,要改成子项目配置或用subprojects块:// 多模块项目下给所有子项目统一配置 subprojects { tasks.named("processResources") { duplicatesStrategy = DuplicatesStrategy.INCLUDE } } // 单个子项目直接在子项目build.gradle中配置 tasks.named("processResources") { duplicatesStrategy = DuplicatesStrategy.INCLUDE }非processResources任务处理的文件
如果日志显示是其他任务(比如processTestResources),直接给对应任务配置:tasks.named("processTestResources") { duplicatesStrategy = DuplicatesStrategy.INCLUDE }
补充说明
Gradle 8.x默认对重复资源的处理策略从之前的宽松模式改为自动重命名(加_1后缀),因此必须显式指定你需要的策略。另外如果使用了Spring Boot这类插件,可能需要额外配置插件对应的资源处理逻辑,比如Spring Boot的bootJar任务也会处理资源,必要时也要给它设置重复策略。
内容的提问来源于stack exchange,提问作者Developer
相关产品推荐
相关产品推荐

