Gradle: Externe Abhängigkeiten einschließen?

temi

Top Contributor
Hallo zusammen,

ich blicke (wieder einmal) bei Gradle nicht durch. Ich möchte eine kleine Java-Library erstellen. Diese nutzt logback als Dependency. Diese Bibliothek möchte ich in ein lokales Verzeichnis exportieren, damit ich sie in einem anderen Java-Projekt wieder mittels Gradle einbinden kann. Das funktioniert im Prinzip auch, aber offenbar wird die Abhängigkeit zu logback nicht mit exportiert, denn mein Testprojekt, dass die Bibliothek verwenden soll, meldet den Fehler, dass slf4j nicht gefunden wird.

Ich dachte das so etwas über die Angaben unter "dependencies" gesteuert wird, hier also "implementation" und "testImplementation". Anscheinend reicht das aber nicht aus. Ich habe jetzt gelesen, das es noch die Angabe "api" gibt, aber das dient wohl dazu die Abhängigkeit dem Nutzer der Bibliothek ebenfalls zu veröffentlichen. Ich möchte sie (hier) aber nur innerhalb der Bibliothek nutzen.

Kann mir da mal jemand helfend unter die Arme greifen?

Code:
plugins {
    id 'java-library'
}

group 'de.xxx'
version '0.1'

repositories {
    mavenCentral()
}

dependencies {
    implementation "ch.qos.logback:logback-classic:1.2.3"
    testImplementation "org.junit.platform:junit-platform-runner:1.6.2"
    testImplementation "org.junit.jupiter:junit-jupiter-engine:5.6.2"
    testImplementation "org.junit.vintage:junit-vintage-engine:5.6.2"
}

test {
    useJUnitPlatform()
}

uploadArchives {
    repositories {
        flatDir {
            dirs "/.../.gradle/artifacts/"
        }
    }
}
 

looparda

Top Contributor
Ich fürchte du musst über ein lokales Repository gehen, damit das mit den Abhängigkeiten klappt. Jedenfalls konnte ich es so hinfrickeln, dass es funktioniert. Kommt das für dich infrage?

producer
Code:
plugins {
    id 'java-library'
    id 'maven'
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

group 'de.xxx'
version '0.1'


repositories {
    mavenCentral()
    maven { url "${rootProject.file("/.gradle/repo/").toURL()}" }
}

dependencies {
    compile ('org.slf4j:slf4j-api:1.7.30')
    implementation ("ch.qos.logback:logback-classic:1.2.3")
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: rootProject.file(".gradle/repo/").toURL() )
        }
    }
}
consumer
Code:
plugins {
    id 'java'
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

group 'de.xxx'
version '0.1'


repositories {
    mavenCentral()
    maven { url "${rootProject.file("/.gradle/repo/").toURL()}" }
}

dependencies {
    implementation 'de.xxx:producer:0.1'
    testCompile group: 'junit', name: 'junit', version: '4.12'
}
 
Zuletzt bearbeitet:

temi

Top Contributor
Vielen Dank an @looparda für die Anregung mit dem lokalen Maven Repository. Ich habe es jetzt so gemacht:
Code:
plugins {
    id 'java-library'
    id 'maven-publish'
}

group 'de.xxx'
version '0.1'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'ch.qos.logback:logback-classic:1.2.3'
    testImplementation 'org.junit.platform:junit-platform-runner:1.6.2'
    testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.6.2'
    testImplementation 'org.junit.vintage:junit-vintage-engine:5.6.2'
}

test {
    useJUnitPlatform()
}

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
}

Der passenden Gradle-Task ist dann publishToMavenLocal

Im Consumer reicht dann:
Code:
repositories {
    mavenCentral()
    mavenLocal()
}


Damit komme ich zurecht. Notfalls kann man den Ort von MavenLocal ja noch anpassen.
 

looparda

Top Contributor
Oops, ja das ist der Task, den ich auch benutzt habe - hatte ich vergessen dazuzuschreiben. Klar kannst du auch das lokale Maven Repo nehmen, das vereinfacht das ganze. Ich dachte nur du willst es eben nicht benutzen sondern ein temporäres erstellen - deshalb die Tricksereien mit den Pfaden.
 

temi

Top Contributor
Oops, ja das ist der Task, den ich auch benutzt habe - hatte ich vergessen dazuzuschreiben. Klar kannst du auch das lokale Maven Repo nehmen, das vereinfacht das ganze. Ich dachte nur du willst es eben nicht benutzen sondern ein temporäres erstellen - deshalb die Tricksereien mit den Pfaden.
Ich habe es inzwischen auch noch mal geändert. So schaut es jetzt (ausschnittsweise) aus:
Code:
publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }

    repositories {
        maven {
            url 'file://home/.../Java/.m2/'
        }
    }
}
Das funktioniert dann mit dem Task "publish".
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
8u3631984 VS Code und Gradle Sub Module IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
N Eclipse debug Gradle-Projekt IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
J Kombinationsproblem: netbeans, gradle, mysql, json IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
temi IntelliJ, Gradle und Git: gitignore IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7
J Bekomme keine lauffähige jar (netbeans/gradle) IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 12
J Install JasperReports on netbeans/gradle Projekt IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
J NetBeans gradle Projekt, unter neu keine Auswahl JavaFX IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
J Gradle add Bom Properties IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
J Gradle localPublish POM IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 11
J mavenBOM alternative für Gradle IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
B IDEA IntelliJ Import Gradle: Plötzlich Android Projekt IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 14
M gradle import in eclipse schlägt fehl IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
J Maven in Gradle builden? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 11
N Gradle Ober und Unterordner zusammengefasst IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
L IDEA IntelliJ Gradle sync failed IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
T NetBeans "Gradle Project" in "Web Application" nutzen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
D Jenkins/Gradle maven-publish Problem IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
temi IDEA IntelliJ Gradle und JavaFX IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 15
B IDEA IntelliJ Gradle Projekt debuggen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 8
temi IDEA IntelliJ Gradle - Erste Schritte IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 8
M Eclipse lauffähiges Jar auch mit gradle erstellen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 0
D Gradle - DSL und Repositories von Maven IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
P richtig eine externe Bibliothek mit .jar erstellen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
NeoLexx Externe eingefügte JAR lässt sich nicht importieren IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
robbin IDEA IntelliJ fremde/externe Bibliothek einbinden IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
W Eclipse Externe Klassenbibliothek (Jar) richtig installieren? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
M NetBeans Zielverzeichnis für externe Libs ändern IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 1
S Eclipse Externe Datenbank IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 8
B Eclipse Wie kann man eine externe Library importieren? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
N externe Library in Eclipse "richtig" einbinden IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7
B Welche IDE, die GUIs gestalten kann, ohne externe Lagerung? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
H Netbeans - jar erstellen, externe Jars mit einbinden/ausgeben IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7
M Eclipse und externe Jar Files IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
M Eclipse als CVS-Client für externe Dateien IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
G externe Library NetBeans / eclipse IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 12
muddin externe jar in Eclipse nur im default package? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
R Netbeans - externe Jars miteinbinden IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 13
G Eclipse-Projekt, inkl. externe jars und Bilderordner zu jar? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
L Eclipse: Externe JARs in eigenes JAR einbinden IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7
G Eclipse: Externe Jar verwenden und im JAR exportieren IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
P BuildPath für externe JAR: Problem mit CVS IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
B Externe Class-Dateien ins Jar-Archiv aufnehmen IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
C externe Bibliothek funktioniert nicht nach JAR-Export IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 2
G Eclipse und externe libraries IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
G Externe JARs einbinden! IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 4
G NetBeans 4.1 - externe jars in Projekt-jar einbinden ? IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
J Eclipse Eclipse mit Maven mit Abhängigkeiten IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 6
A Abhängigkeiten zwischen Projketen und andere "Herausforderungen" IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 5
S Maven: Abhängigkeiten + target in [b]eine[/b] Jar IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 3
B Suche Tool zum Anzeigen von Abhängigkeiten IDEs - Eclipse, IntelliJ IDEA, BlueJ & mehr 7

Ähnliche Java Themen

Neue Themen


Oben