gpt4 book ai didi

java - gradle 与外部项目的循环依赖

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

我有一个相当简单的设置,但不起作用,我无法找出原因:

文件夹结构如下:

/dependency
/build.gradle
/settings.gradle
/src/main/...

/Mainproject
/build.gradle
/settings.gradle

/Subproject_1
/build.gradle
/src/main...

/Subproject_2
/build.gradle
/src/main...

我希望子项目依赖于本地的“依赖”来进行快速测试。所以我按照手册做了:

/Mainproject/settings.gradle:

include "Subproject_1", "Subproject_2", "dependency"
project(":dependency").projectDir = file('../dependency')

/Mainproject/build.gradle:

allprojects {
apply plugin: 'java'
dependencies {
compile project(path: ':dependency')
}
}

dependencies {
compile project(':Subproject_1')
compile project(':Subproject_2')
}

/dependency/build.gradle:

version '1.0'
apply plugin: 'java'

repositories {
maven {
url "http://...."
}
}

dependencies {
compile group: 'commons-lang', name: 'commons-lang', version: '2.6'
compile group: 'javax', name: 'javaee-api', version: '7.0'
}

jar {
manifest {
attributes 'Implementation-Title': 'Archive delegation dispatcher classes',
'Implementation-Version': project.version
}
}

Subproject_1和_2的build.gradle文件为空。依赖的settings.gradle文件为空。

当我构建 MainProject 时,我得到:

Circular dependency between the following tasks:
:dependency:classes
\--- :dependency:compileJava
\--- :dependency:jar
\--- :dependency:classes (*)

(*) - details omitted (listed previously)

我无法理解为什么会这样。

有什么提示吗?

最佳答案

当您在主项目的settings.gradle 文件中包含“dependency”时,您就使“dependency”项目成为“Mainproject”的子项目。

然后主项目的 build.gradle 文件中的此 block 将“依赖项”定义为所有子项目的编译依赖项。

allProjects {
dependencies {
compile project(path: ':dependency')
}
}

由于“依赖项”项目也是一个子项目,因此您定义了一个循环依赖项,其中“依赖项”项目依赖于其自身。

相反,尝试使用以下内容为每个子项目创建一个 settings.gradle 文件:

include "dependency"
project(":dependency").projectDir = file('../dependency')

然后修改 Mainproject 的 settings.gradle 文件,如下所示:

include "Subproject_1", "Subproject_2"

关于java - gradle 与外部项目的循环依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36202064/

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