2016-07-22 178 views
4

我基本上在寻找一种方法来模仿maven依赖关系provided。我正在构建一个jar(db驱动程序的扩展),它依赖于另一个jar(数据库驱动程序),但我不想包含该jar。仅对编译时的Gradle依赖关系和测试

我能够使用compileOnly来实现,但现在测试将不会运行或编译,因为所需的jar不包含在测试中。

我尝试了可用的依赖关系列表,例如testCompile,但是我找不到一个在编译时和测试运行和编译时可用的jar。

我该如何正确包含该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" 
} 

清单两次的依赖性不工作,但显然不是一个很好的解决方案

+0

你列出的依赖关系既是'compileOnly'和'testCompile'?另外请显示你的'build.gradle'文件 – JBirdVegas

+0

列出依赖项两次工作,但似乎是一个相当丑陋的解决方法。我已将'build.gradle'文件添加到问题中。 –

回答

1

您可以延长你的testCompile配置compileOnly配置:

configurations { 
    testCompile.extendsFrom compileOnly 
} 
0

我使用以下;

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

比从tynn答案线长,但让意图更清晰恕我直言,

+0

不再是如果我的情况下,你有10'compileOnly'依赖。不幸的是,这似乎并不适合我。 – bj0