2016-07-22 78 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