Gradle 仅用于编译时和测试的渐变依赖项
我基本上是在寻找一种方法来模仿提供的maven依赖项Gradle 仅用于编译时和测试的渐变依赖项,gradle,Gradle,我基本上是在寻找一种方法来模仿提供的maven依赖项。我正在构建一个jar(db驱动程序的扩展),它依赖于另一个jar(db驱动程序),但我不想包含那个jar 我可以使用compileOnly来实现这一点,但是现在测试不会运行或编译,因为测试中不包含所需的jar 我尝试了一系列可用的依赖项,比如testCompile,但是我找不到一个可以使jar在编译时以及测试运行和编译时可用的依赖项 我怎样才能把那个罐子放进去 编辑:根据请求,build.gradle文件: group 'com.mygrou
。我正在构建一个jar(db驱动程序的扩展),它依赖于另一个jar(db驱动程序),但我不想包含那个jar
我可以使用compileOnly
来实现这一点,但是现在测试不会运行或编译,因为测试中不包含所需的jar
我尝试了一系列可用的依赖项,比如testCompile
,但是我找不到一个可以使jar在编译时以及测试运行和编译时可用的依赖项
我怎样才能把那个罐子放进去
编辑:根据请求,build.gradle文件:
group 'com.mygroup'
version '1.0-SNAPSHOT'
apply plugin: 'java'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
compileOnly "org.mongodb:mongodb-driver:3.3.0"
testCompile "org.mongodb:mongodb-driver:3.3.0"
}
两次列出依赖项确实有效,但显然不是一个很好的解决方案您可以从compileOnly
配置扩展testCompile
配置:
configurations {
testCompile.extendsFrom compileOnly
}
我使用以下方法
sourceSets {
// Make the compileOnly dependencies available when compiling/running tests
test.compileClasspath += configurations.compileOnly
test.runtimeClasspath += configurations.compileOnly
}
这比tynn的答案长了一行,但更清楚地表明了意图。那么,您是否将依赖项同时列为compileOnly
和testCompile
?另外,请显示您的build.gradle
文件,两次列出依赖项确实有效,但这似乎是一个相当丑陋的解决方法。我已经在问题中添加了build.gradle
文件。如果像我一样,您有10个compileOnly
依赖项,那么这个文件就不再长了。不幸的是,这似乎对我不起作用。如何在Kotlin DSL中表述这一点?这已弃用,计划在Gradle 6.0中删除