我有兩個項目,項目A和項目B.兩者都是用groovy編寫的,並使用gradle作爲構建系統。項目A需要項目B. 這適用於編譯和測試代碼。Gradle測試依賴關係
如何配置項目A的測試類可以訪問項目B的測試類?
我有兩個項目,項目A和項目B.兩者都是用groovy編寫的,並使用gradle作爲構建系統。項目A需要項目B. 這適用於編譯和測試代碼。Gradle測試依賴關係
如何配置項目A的測試類可以訪問項目B的測試類?
您可以通過「測試」配置公開測試類,然後在該配置上定義testCompile依賴關係。
我有該程序的所有Java項目,罐子所有的測試代碼:
task testJar(type: Jar, dependsOn: testClasses) {
baseName = "test-${project.archivesBaseName}"
from sourceSets.test.output
}
configurations {
tests
}
artifacts {
tests testJar
}
後來,當我有測試代碼,我要項目,我使用之間的訪問
dependencies {
testCompile project(path: ':aProject', configuration: 'tests')
}
這是Java的;我假設它也適用於常規。
上述解決方案可行,但不適用於Gradle的最新版本1.0-rc3
。
task testJar(type: Jar, dependsOn: testClasses) {
baseName = "test-${project.archivesBaseName}"
// in the latest version of Gradle 1.0-rc3
// sourceSets.test.classes no longer works
// It has been replaced with
// sourceSets.test.output
from sourceSets.test.output
}
這對我的作品(JAVA)
// use test classes from spring-common as dependency to tests of current module
testCompile files(this.project(':spring-common').sourceSets.test.output)
testCompile files(this.project(':spring-common').sourceSets.test.runtimeClasspath)
// filter dublicated dependency for IDEA export
def isClassesDependency(module) {
(module instanceof org.gradle.plugins.ide.idea.model.ModuleLibrary) && module.classes.iterator()[0].url.toString().contains(rootProject.name)
}
idea {
module {
iml.whenMerged { module ->
module.dependencies.removeAll(module.dependencies.grep{isClassesDependency(it)})
module.dependencies*.exported = true
}
}
}
.....
// and somewhere to include test classes
testRuntime project(":spring-common")
對於搖籃1.5
task testJar(type: Jar, dependsOn: testClasses) {
from sourceSets.test.java
classifier "tests"
}
這是一個不需要中間jar文件一個簡單的解決方案:
dependencies {
...
testCompile project(':aProject').sourceSets.test.output
}
There' ■在這個問題更多的討論:Multi-project test dependencies with gradle
這打破了IDE集成並遺漏了傳遞依賴。它也打破了項目的封裝,這總是一個不好的做法。 – 2017-02-20 17:40:19
對於Android的最新版本的Gradle(我目前在2.14.1),你只需要添加下面的項目B擺脫項目A.
中的所有測試的依賴dependencies {
androidTestComplie project(path: ':ProjectA')
}
可能重複:http://stackoverflow.com/questions/5644011/multi-project-test-dependencies-with-gradle – 2016-03-08 17:25:49