Gradle依赖仅用于编译时和测试

st-*_*t-h 16 gradle

我基本上在寻找一种模仿maven依赖的方法provided.我正在构建一个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"
}
Run Code Online (Sandbox Code Playgroud)

两次列出依赖项确实有效,但显然不是一个非常好的解决方案

tyn*_*ynn 13

您可以testCompilecompileOnly配置扩展配置:

configurations {
    testCompile.extendsFrom compileOnly
}
Run Code Online (Sandbox Code Playgroud)

  • 已弃用,计划在 Gradle 6.0 中删除 (2认同)