gpt4 book ai didi

gradle - 如何强制更改gradle中模块的依赖关系

转载 作者:行者123 更新时间:2023-12-03 03:26:01 29 4
gpt4 key购买 nike

我正在使用 coody-elock lib 在我的项目中使用 redis:

api("org.coody.framework:coody-elock:alpha-1.2.4")

当我运行项目时,它给了我错误:
java.lang.NoClassDefFoundError: redis/clients/jedis/params/SetParams

我追踪到源代码并使用 jredis 2.9.1 找到 coody-elock,但我的项目使用的是 3.0.1,我检查了 3.0.1 有 SetParam 类。这是我使用 gradle 6.0 导入的 jredis:
api("redis.clients:jedis:3.0.1")

现在如何将 jredis 更改为使用 3.0.1 而不是 2.9.1?这是我已经尝试过的:
 api("redis.clients:jedis:3.0.1") {
force = true
}

api("org.coody.framework:coody-elock:alpha-1.2.4") {
exclude group: 'redis.clients', module: "jredis"
}

但它不起作用,当我使用这个命令编译时:
gradle build -x test

输出 jar 仍然使用 2.9.1 版本,我应该怎么做才能解决这个问题?

环境:Java 8 + Spring Boot 2.1.3 发布 + Gradle 6.0

另一种方法尝试:
configurations.all {
resolutionStrategy.force 'redis.clients:jedis:3.0.1'
//循环一个个的依赖库
resolutionStrategy.eachDependency {details ->
//获取当前循环到的依赖库
def requested = details.requested
//如果这个依赖库群组的名字是com.android.support
if (requested.group == 'redis.clients') {
//且其名字不是以multidex开头的
//if (!requested.name.startsWith("multidex")) {
//这里指定需要统一的依赖版本
details.useVersion '3.0.1'
//}
}
}
}

其他方式:
configurations.all {
resolutionStrategy {
force 'redis.clients:jedis:3.0.1'
}
}

还是不行。

最佳答案

我终于找到了使用 2.9.1 版本的 jar 的其他模块。但是我正在更新我的公共(public) jar(每个模块依赖项),正确的方法是每个项目都应该更新。顺便说一下,我使用 api 关键字来公开 jedis jar。最后我通过在其他模块中写入依赖来解决问题。这是一个不好的方法,但如果你没有更好的解决方案,你可以试试。

关于gradle - 如何强制更改gradle中模块的依赖关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59597006/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com