Gradle 仅用于编译时和测试的渐变依赖项

Gradle 仅用于编译时和测试的渐变依赖项,gradle,Gradle,我基本上是在寻找一种方法来模仿提供的maven依赖项。我正在构建一个jar(db驱动程序的扩展),它依赖于另一个jar(db驱动程序),但我不想包含那个jar 我可以使用compileOnly来实现这一点,但是现在测试不会运行或编译,因为测试中不包含所需的jar 我尝试了一系列可用的依赖项,比如testCompile,但是我找不到一个可以使jar在编译时以及测试运行和编译时可用的依赖项 我怎样才能把那个罐子放进去 编辑:根据请求,build.gradle文件: group 'com.mygrou

我基本上是在寻找一种方法来模仿提供的maven依赖项
。我正在构建一个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中删除