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

如何在Gradle中将传递依赖强制设为仅运行时依赖?

全局将Joda-Time设为仅运行时依赖的Gradle解决方案

要实现全局控制Joda-Time仅出现在运行时类路径,无需逐个排除依赖,可以通过以下Gradle配置完成:

核心配置

在build.gradle(或build.gradle.kts)中添加以下代码:

Groovy DSL

// 全局排除所有配置中的joda-time传递依赖
configurations.all {
    exclude group: 'joda-time', module: 'joda-time'
}

// 显式将joda-time加入仅运行时依赖
dependencies {
    runtimeOnly 'joda-time:joda-time:2.10.8'
}

Kotlin DSL

// 全局排除所有配置中的joda-time传递依赖
configurations.all {
    exclude(group = "joda-time", module = "joda-time")
}

// 显式将joda-time加入仅运行时依赖
dependencies {
    runtimeOnly("joda-time:joda-time:2.10.8")
}

配置说明

  • configurations.all会遍历项目所有依赖配置(包括compileClasspath、runtimeClasspath等),全局排除所有传递引入的Joda-Time依赖——不管它是通过多少层间接依赖引入的,都无需手动逐个处理。
  • 显式添加runtimeOnly依赖,确保Joda-Time仅存在于运行时类路径中:编译阶段IDE不会自动导入Joda-Time的类,团队成员无法在新代码中意外使用;但运行时第三方依赖仍能正常加载Joda-Time类。

验证方法

  1. 执行gradle dependencies命令,查看compileClasspath下是否已无Joda-Time,而runtimeClasspath中存在该依赖。
  2. 在代码中尝试导入org.joda.time.LocalDateTime等类,IDE会提示找不到,编译时也会报错,确保编译阶段无法使用Joda-Time。
  3. 运行项目,验证依赖Joda-Time的第三方组件仍能正常工作。

补充说明

如果项目中存在不同版本的Joda-Time传递依赖,runtimeOnly中指定的版本会成为唯一生效的版本,同时避免版本冲突问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 10:59:56