我有provided
依賴項範圍配置如下。我的問題是,提供的依賴關係在運行時在測試中不可見。我如何配置這個以保持依賴關係provided
但在測試類路徑中可用?使用Gradle添加提供的依賴項到測試類路徑
apply plugin: 'java'
configurations {
provided
}
sourceSets {
main {
compileClasspath += configurations.provided
}
}
dependencies {
provided 'com.google.guava:guava:18.0'
provided 'org.apache.commons:commons-lang3:3.3.2'
// Tests
testCompile 'junit:junit:4.11'
testCompile 'org.assertj:assertj-core:1.7.0'
// Additional test compile dependencies
testCompile 'joda-time:joda-time:2.2'
}
一種解決方案是增加像testCompile
範圍喬達時庫的依賴性,但我不想複製任何條目。我確信可以通過適當的配置來實現。
即使使用這兩種配置,我仍然無法運行測試。例如,使用提供的Joda時間,無論哪個配置,我都會得到'Gradle:error:package org.joda.time不存在' – tomrozb 2014-12-03 18:12:11
這些是編譯還是運行時依賴關係。如果它是一個編譯依賴項,你將需要使用'sourceSets.test.compileClasspath + = configurations.provided'指定你在原始文章中所做的。 – 2014-12-04 01:22:49
仍然無法使用。它編譯,但在運行時,我得到'java.lang.NoClassDefFoundError:org/joda/time/ReadableInstant'嘗試使用發佈在答案中的選項,唯一的變化是使用'testRuntime.extendsFrom(provided)',但仍然使用java崩潰。 lang.NoClassDefFoundError:junit/textui/ResultPrinter'任何想法? – tomrozb 2014-12-04 20:39:17