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

Gradle多项目构建出现duplicate handling strategy未配置错误如何解决?

解决方案

Gradle 7及以上版本对归档、复制类任务默认启用重复文件检测,遇到重名文件会直接抛出构建失败错误,可通过以下两种方式配置重复处理策略解决问题:

方案1:单独配置报错的distTar任务

直接在Project B的build.gradle中添加如下配置即可:

Groovy语法

import org.gradle.api.file.DuplicatesStrategy

tasks.named('distTar') {
    duplicatesStrategy = DuplicatesStrategy.EXCLUDE
}

Kotlin DSL语法

import org.gradle.api.file.DuplicatesStrategy

tasks.named<Tar>("distTar") {
    duplicatesStrategy.set(DuplicatesStrategy.EXCLUDE)
}

方案2:全局配置所有同类任务的重复策略

如果多个归档/复制任务都存在同类报错,可以在根项目的build.gradle中添加全局配置,一次性适配所有项目的相关任务:

Groovy语法

import org.gradle.api.file.DuplicatesStrategy

allprojects {
    tasks.withType(Copy) {
        duplicatesStrategy = DuplicatesStrategy.EXCLUDE
    }
    tasks.withType(Tar) {
        duplicatesStrategy = DuplicatesStrategy.EXCLUDE
    }
    tasks.withType(Zip) {
        duplicatesStrategy = DuplicatesStrategy.EXCLUDE
    }
}

Kotlin DSL语法

import org.gradle.api.file.DuplicatesStrategy

allprojects {
    tasks.withType<Copy> {
        duplicatesStrategy.set(DuplicatesStrategy.EXCLUDE)
    }
    tasks.withType<Tar> {
        duplicatesStrategy.set(DuplicatesStrategy.EXCLUDE)
    }
    tasks.withType<Zip> {
        duplicatesStrategy.set(DuplicatesStrategy.EXCLUDE)
    }
}

常用重复策略说明

  • EXCLUDE:忽略重复文件,仅保留第一个被加入的版本,绝大多数场景都适用
  • WARN:遇到重复文件仅输出警告日志,不会阻断构建
  • INCLUDE:允许重复文件存入归档包,不推荐使用,会导致部分解压工具报错
  • FAIL:遇到重复文件直接抛出错误,是Gradle 7+的默认配置

补充说明:如果想要从根源解决问题,可以先排查Project B的依赖配置,确认是否同时从多个路径引入了同名的projecta.jar,清理冗余依赖即可避免重复问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 20:51:00