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

时间:2016-07-22 15:43:45

标签: 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"
}

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

2 个答案:

答案 0 :(得分:11)

您可以从testCompile配置扩展compileOnly配置:

configurations {
    testCompile.extendsFrom compileOnly
}

答案 1 :(得分:0)

我使用以下内容;

sourceSets {
    // Make the compileOnly dependencies available when compiling/running tests
    test.compileClasspath += configurations.compileOnly
    test.runtimeClasspath += configurations.compileOnly
}

这是比tynn的答案更长的行,但是使意图更清晰恕我直言,