所以我有一个多项目 gradle 构建,包括:
myapp
myapp2
shared
testLib
在哪里myapp
并myapp2
在shared
.
该testLib
项目还具有对shared
. 它的存在是为了定义一些使用shared
类的单元测试帮助代码。这些类存在于其main
sourceSet 中,因为该项目的目的是构建包含测试助手类的库。
现在该shared
项目有单元测试。这些测试使用testLib
. 因此shared
有一个testCompile项目依赖于testLib
.
Gradle 对此没有任何问题。它理解首先构建shared
,然后构建testLib
,然后运行单元测试shared
就可以了。 但是, Buildship没有。在我导入构建后,它将此标记为项目依赖周期:“在项目'共享'的构建路径中检测到一个周期。该周期由项目 {shared,testLib} 组成。” 以及该testLib
项目的类似信息。
那么,您可能会问,为什么不直接testLib
进入测试 sourceSet呢?shared
好吧,问题是,一些单元测试帮助代码也被 和 中的单元测试myapp
使用myapp2
。这两个项目都具有 compile 项目依赖项shared
和 testCompile 项目依赖项testLib
。
有什么方法可以让 Buildship 明白这不是一个真正的项目依赖周期?
编辑:
我在这里尝试了部分解决方案:https : //softnoise.wordpress.com/2014/09/07/gradle-sub-project-test-dependencies-in-multi-project-builds/将我的testLib构建更改为此(将测试助手类从 ) 移回test
sourceSet 后main
:plugins { id 'java' }
configurations {
testOutput
}
dependencies {
compile project(':shared')
}
task jarTest (type: Jar) {
from sourceSets.test.output
classifier = 'test'
}
artifacts {
testOutput jarTest
}
并更改我的shared
项目以引用新的testLib-test.jar
通过:
testCompile project(path: ':testLib', configuration: 'testOutput')
仍然没有运气。gradle 再次没有问题并且构建良好,但是在 eclipse 中删除并重新导入项目后,Buildship 返回与以前相同的循环警告。
Buildship只是目前无法处理这种情况吗?