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

如何使用extendsFrom共享配置依赖并控制依赖加载顺序

解决方案

你遇到的B.extendsFrom(A)写在dependencies块中编译失败,是因为extendsFrom是Configuration对象的专属方法,只能在configurations代码块内调用,或是在配置完成后的全局作用域调用,不属于dependencies代码块的可用方法。

要实现B自身依赖排在继承自A的依赖前面的效果,有两种兼容Gradle 8+的实现方式:

方案1:手动追加A的依赖到B的末尾(写法最简单,无警告)

直接遍历A的所有依赖项追加到B的依赖列表末尾,替代原来的B A写法:

configurations {
  A
  B
}

dependencies {
  A 'jar1'
  B 'jar2'
}

// 在配置阶段完成后追加依赖,保证B自身的依赖排在前面
configurations.B.dependencies.addAll(configurations.A.allDependencies)

最终B的类路径顺序为jar2;jar1,和你之前的写法效果完全一致。

方案2:使用extendsFrom配合类路径排序

如果你需要保留配置的继承关系,可以在使用类路径的位置手动调整顺序即可:

configurations {
  A
  B {
    extendsFrom A
  }
}

dependencies {
  A 'jar1'
  B 'jar2'
}

// 示例:给源码编译类路径调整顺序
sourceSets.main.compileClasspath = configurations.B + configurations.A

在其他需要用到B配置类路径的场景,按上述逻辑调整顺序即可符合要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:24:04