升级到Gradle 5时的循环依赖关系

升级到Gradle 5时的循环依赖关系,gradle,kotlin,circular-dependency,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:serv

我们的项目一直有效,直到我尝试升级到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 (*)

为什么会这样?

问题确实出在
设置中的
符号上。现在我已经将所有嵌套项目更改为
-
,问题就解决了

更具体地说,在我们有类似于:

include 'common/server',
    'someproject/server',
    'someproject/common',
    'someproject/search',
    ...
这对gradle 4起了作用

然后在Gradle 5我把它改成了

include 'common:server',
    'someproject:server',
    'someproject:common',
    'someproject:search',
    ...
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')
这可能是因为
someproject:common
依赖于
common:server
或类似的东西

现在我把它改成了

include 'common:server',
    'someproject:server',
    'someproject:common',
    'someproject:search',
    ...
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中也是可以重现的,只是在那里我们仍然有
/
符号。

对于那些偶然发现这个问题的人来说

见:

在多项目设置中,重复的“shortname”将使用活动扳手:

从上面的url:

myApp
  - client
    - common
  - server
    - common
即使它应该是两个不同的条目,“common”的重复(简称)也是问题/错误所在

最后我做了这个:(我的代码当然是不同的名字)(但想法是)

消除歧义

url还有其他一些想法

我在代码中看到的是,构建的jar看起来像这样:

common-1.0-SNAPSHOT.jar


所以这就是为什么我会说“啊,也许我对短名有着模棱两可的问题”。终于找到了github gradle链接。

哇,很棒的侦探技巧。考虑到这一点:(我认为它是相同的麻烦区域)。但这个解决方案可能是最好的解决办法。