gradle - 升级到 Gradle 5 时的循环依赖

标签 gradle kotlin circular-dependency

我们的项目一直有效,直到我尝试升级到 Gradle 5。它提示的第一件事是 / 对于多项目来说不是一个好的角色,例如bla/blub 无效,因此我们将其更改为 bla:blub (即使错误消息显示 : 也无效)。但现在我们显然有了一个以前在 Gradle 4 中不存在的循环依赖:

Circular dependency between the following tasks:
:lap:server:classes
\--- :lap:server:compileJava
     +--- :lap:server:compileKotlin
     |    \--- :lap:server:jar
     |         +--- :lap:server:classes (*)
     |         +--- :lap:server:compileKotlin (*)
     |         \--- :lap:server:inspectClassesForKotlinIC
     |              \--- :lap:server:classes (*)
     \--- :lap:server:jar (*)

为什么会这样?

最佳答案

问题确实出在我们的 settings.gradle 中的 : 符号。现在我已将所有嵌套项目更改为 - 问题已解决。

更具体地说,在我们有类似的事情之前:

include 'common/server',
    'someproject/server',
    'someproject/common',
    'someproject/search',
    ...

适用于 gradle 4。

然后在 Gradle 5 中我将其更改为

include 'common:server',
    'someproject:server',
    'someproject:common',
    'someproject:search',
    ...

这导致了这个问题,大概是因为 someproject:common 依赖于 common:server 或类似的东西。

现在我已经将其更改为

include 'common-server'
project(':common-server').projectDir = file('common/server')

include 'someproject-server'
project(':someproject-server').projectDir = file('someproject/server')

include 'someproject-common'
project(':someproject-common').projectDir = file('someproject/common')

一切都像魅力一样。顺便说一句,循环依赖的错误在 Gradle 4 中也可以重现,只是我们仍然有 / 符号。

关于gradle - 升级到 Gradle 5 时的循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54231199/

相关文章:

groovy - 为什么Gradle在子项目依赖项中找不到 'project()'方法?

kotlin - HMS Drive kit 查询和查询字符串

android - 在 Kotlin 中更改列表或数组中项目的数据类型

lambda - 有没有一种方法可以使用zipWithNext kotlin压缩列表中的部分值?

.net - 循环引用导致内存泄漏?

plugins - Gradle插件从插件jar复制文件

android - 找不到方法 '' com.amazon.ion.system.IonBinaryWriterBuilder"

gradle - 将环境变量从build.gradle传递到自定义插件

c++ - 具有继承模板类的循环依赖

c# - 循环依赖最佳实践