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

Gradle执行build报错detachedConfiguration1依赖配置未声明如何修复

问题解释与修复方案

1. detachedConfiguration1 是什么

Gradle 中的 detachedConfiguration 是动态创建的临时依赖配置,由构建脚本或插件通过 project.configurations.detachedConfiguration() 方法生成,没有显式自定义名称时 Gradle 会按创建顺序自动编号,detachedConfiguration1 就是本次构建过程中第一个生成的临时配置。这类配置通常用于临时解析特定依赖、完成一次性任务(比如本次场景下的二进制兼容性对比),不会和项目的常规编译、运行配置绑定。

2. 报错成因

本次报错由 japicmp 二进制兼容性检查插件的依赖解析逻辑触发:

  • japicmp 任务需要拉取指定版本(2.4.16)的 org.codehaus.groovy:groovy-console 构件作为基准版本,和当前本地代码构建的结果做兼容性对比,对应逻辑位于 binarycompatibility.gradle 第67行,就是在这里创建了 detachedConfiguration1 用来拉取基准依赖。
  • 你的项目中存在同名的 :groovy-console 子项目,Gradle 依赖解析时默认优先匹配本地子项目,而不是去远程仓库拉取同名第三方构件。
  • 你的 :groovy-console 子项目没有声明 Gradle 默认约定的 default 配置(如果子项目没有使用标准的 java/java-library 插件,或者自定义配置时移除了默认配置就会出现这个问题),导致临时配置尝试从子项目拉取依赖时找不到对应的配置入口,最终解析失败。

3. 修复方案

你可以根据实际需求选择以下任意一种方案:

  • 强制 japicmp 从远程仓库拉取基准依赖,跳过本地子项目匹配:修改 binarycompatibility.gradle 中拉取基准版本依赖的代码,给依赖坐标加上 @jar 后缀,写法为 org.codehaus.groovy:groovy-console:2.4.16@jar;或者给临时配置添加解析策略:resolutionStrategy.preferProjectModules(false)。
  • 给 :groovy-console 子项目补全 default 配置:在 :groovy-console 的 build.gradle 中添加如下配置即可:
configurations {
    default {
        extendsFrom configurations.runtimeClasspath
    }
}
  • 如果不需要执行二进制兼容性检查,直接禁用 japicmp 相关任务即可:执行构建时添加参数 ./gradlew build -x japicmp,或者在根构建脚本中添加配置 tasks.withType(JapicmpTask) { enabled = false }。

内容的提问来源于stack exchange,提问作者Ekaterina Ivanova iceja.net

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:48:04