2016-07-22 13 views
4

Ich bin im Grunde auf der Suche nach einer Möglichkeit, die Maven Abhängigkeit provided nachzuahmen. Ich baue ein jar (eine Erweiterung für einen db-Treiber), die von einem anderen jar (der db-Treiber) abhängt, aber ich möchte dieses jar nicht aufnehmen.Gradle Abhängigkeit nur für Kompilierzeit und Test

Ich kann compileOnly verwenden, um das zu erreichen, aber jetzt werden die Tests nicht ausgeführt oder kompiliert, da das erforderliche jar nicht in Tests enthalten ist.

Ich probierte die Liste der verfügbaren Abhängigkeiten wie testCompile, aber ich konnte keinen finden, der das Jar zur Kompilierzeit verfügbar macht und wenn die Tests laufen und kompilieren.

Wie würde ich dieses Glas richtig einbeziehen?

Edit: Wie gewünscht, die build.gradle Datei:

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" 
} 

die Abhängigkeit zweimal Listing funktionierts, aber offensichtlich ist keine sehr schöne Lösung

+0

hat listen Sie die Abhängigkeit sowohl als 'compileOnly' und' testCompile'? Bitte zeigen Sie auch Ihre 'build.gradle' Datei – JBirdVegas

+0

Auflistung der Abhängigkeit zweimal funktioniert, scheint jedoch eine ziemlich hässliche Problemumgehung. Ich habe die 'build.gradle' Datei zur Frage hinzugefügt. –

Antwort

1

Sie können Ihre testCompile Konfiguration erstrecken sich von die compileOnly konfiguration:

configurations { 
    testCompile.extendsFrom compileOnly 
} 
0

Ich verwende Folgendes;

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

das ist eine Linie, die länger als die Antwort von Tynn, macht aber die Absicht klarer IMHO,

+0

ist es nicht mehr, wenn, wie in meinem Fall, Sie 10 'compileOnly' Abhängigkeiten haben. Leider scheint das bei mir nicht zu funktionieren. – bj0