我有一个相当简单的设置,但不起作用,我无法找出原因:
文件夹结构如下:
/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/