Daher habe ich versucht, meine lokale .jar-Dateiabhängigkeit zu meiner build.gradle-Datei hinzuzufügen:
apply plugin: 'java'
sourceSets {
main {
java {
srcDir 'src/model'
}
}
}
dependencies {
runtime files('libs/mnist-tools.jar', 'libs/gson-2.2.4.jar')
runtime fileTree(dir: 'libs', include: '*.jar')
}
Und Sie können sehen, dass ich die JAR-Dateien hier in den Ordner referencedLibraries eingefügt habe: https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1/referencedLibraries
Das Problem ist jedoch, dass beim Ausführen des Befehls: gradle build in der Befehlszeile die folgende Fehlermeldung angezeigt wird:
error: package com.google.gson does not exist
import com.google.gson.Gson;
Hier ist mein gesamtes Repo: https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1
java
gradle
dependency-management
build.gradle
gradle-eclipse
Wang-Zhao-Liu QM
quelle
quelle
Antworten:
Wenn Sie diese .jar wirklich aus einem lokalen Verzeichnis nehmen müssen,
Fügen Sie neben Ihrem Modul gradle hinzu (nicht die App gradle-Datei):
Warum versuchen Sie dies nicht, da Sie eine Standard-JAR-Datei in einem tatsächlichen Maven-Repository sind?
quelle
gradle.build
Datei - Was ist diese "App-Gradle-Datei" und die "Modul-Gradle"?implementation(":gson:2.2.4")
scheint der Weg zu sein, es zu tun.Verwenden Sie gemäß der Dokumentation einen relativen Pfad für eine lokale JAR-Abhängigkeit wie folgt:
quelle
Sie können dies auch tun, indem alle JARs in das lokale Repository aufgenommen werden. Auf diese Weise müssten Sie es nicht jedes Mal angeben.
quelle
Folgendes funktioniert für mich:
Siehe die Gradle-Dokumentation .
quelle
Sie können versuchen, Ihr lokales Maven-Repository für Gradle wiederzuverwenden:
Installieren Sie das Glas in Ihrem lokalen Maven-Repository:
mvn install:install-file -Dfile=utility.jar -DgroupId=com.company -DartifactId=utility -Dversion=0.0.1 -Dpackaging=jar
Überprüfen Sie, ob Sie das JAR in Ihrem
~/.m2/
lokalen Maven-Repository installiert habenAktivieren Sie Ihr lokales Maven-Repository in Ihrer
build.gradle
Datei:quelle
Die akzeptierte Antwort ist gut. Ich hätte jedoch verschiedene Bibliothekskonfigurationen in meinem Gradle-Build für mehrere Projekte benötigt, um dieselbe Java-Bibliothek eines Drittanbieters zu verwenden.
Das Hinzufügen von ' $ rootProject.projectDir ' zum Pfadelement ' dir ' in meinem Abschluss ' allprojects ' bedeutete, dass jedes Unterprojekt auf dasselbe ' libs' -Verzeichnis verwies und nicht auf eine lokale Version dieses Unterprojekts:
BEARBEITEN von Quizzie: "$ {rootProject.projectDir}" wurde in "$ rootProject.projectDir" geändert (funktioniert in der neuesten Gradle-Version).
quelle
Ein einfacher Weg, dies zu tun, ist
Es werden alle .jar-Dateien in Ihrem libs-Verzeichnis in App kompiliert.
quelle
Eine Lösung für Benutzer von Kotlin DSL
Die bisher hinzugefügten Lösungen eignen sich hervorragend für das OP, können jedoch nicht mit Kotlin DSL verwendet werden, ohne sie zuvor zu übersetzen. Hier ist ein Beispiel, wie ich meinem Build mit Kotlin DSL eine lokale .JAR hinzugefügt habe:
Denken Sie daran, dass bei Verwendung von Windows Ihre Backslashes maskiert werden müssen:
Denken Sie auch daran, dass Anführungszeichen doppelte Anführungszeichen und keine einfachen Anführungszeichen sein müssen.
Bearbeiten für 2020:
Gradle-Updates sind veraltet
compile
undtestCompile
zugunsten vonimplementation
undtestImplementation
. Der obige Abhängigkeitsblock würde also für aktuelle Gradle-Versionen folgendermaßen aussehen:quelle
compile(project(":MyProject"))
ungefähr Folgendes tun : , wobei "MyProject" in Ihrersettings.gradle
Datei mit etwas wie definiert istinclude("MyProject")
.Ich konnte den obigen Vorschlag unter https://stackoverflow.com/a/20956456/1019307 nicht zum Laufen bringen. Das hat aber bei mir funktioniert. Für eine Datei
secondstring-20030401.jar
, die ich in einemlibs/
Verzeichnis im Stammverzeichnis des Projekts gespeichert habe :quelle
Die Frage wurde bereits ausführlich beantwortet. Ich möchte noch etwas hinzufügen, das mir sehr überraschend erscheint:
Die Aufgabe "Gradle-Abhängigkeiten" listet keine Dateiabhängigkeiten auf. Auch wenn Sie vielleicht denken, dass sie doch im Block "Abhängigkeiten" angegeben wurden.
Verlassen Sie sich also nicht auf die Ausgabe, um zu überprüfen, ob Ihre referenzierten lokalen lib-Dateien ordnungsgemäß funktionieren.
quelle
Die Lösung, die für mich funktioniert hat, ist die Verwendung von fileTree in der Datei build.gradle. Behalten Sie die .jar-Datei, die als Abhängigkeit hinzugefügt werden muss, im libs-Ordner. Geben Sie den folgenden Code im Abhängigkeitsblock in build.gradle ein:
quelle
Der beste Weg, dies zu tun, besteht darin, dies in Ihre build.gradle-Datei einzufügen und die Synchronisierungsoption zu drücken
quelle
Sie können ein Glas hinzufügen, das tut:
Für gradle geben Sie einfach folgenden Code ein
build.gradle
:und für Maven folgen Sie einfach den Schritten:
Für Intellij: Datei-> Projektstruktur-> Module-> Registerkarte Abhängigkeit-> Klicken Sie auf + Vorzeichen-> Glas und Abhängigkeit-> Wählen Sie die zu importierenden Gläser aus-> OK-> Anwenden (falls sichtbar) -> OK
Denken Sie daran, dass wenn Sie
java.lang.NoClassDefFoundError: Could not initialize class
zur Laufzeit eine Ausnahme haben, dies bedeutet, dass Abhängigkeiten in jar nicht dafür installiert sind, dass Sie alle Abhängigkeiten im übergeordneten Projekt hinzufügen müssen.quelle
Gehe zu Datei -> Projektstruktur -> Module -> App -> Registerkarte Abhängigkeiten -> Klicken Sie auf + (Schaltfläche) -> Dateiabhängigkeit auswählen -> JAR-Datei im lib-Ordner auswählen
Diese Schritte fügen Ihre Abhängigkeit automatisch zu gralde hinzu
Sehr einfach
quelle
build.gradle
.Seien Sie vorsichtig, wenn Sie die kontinuierliche Integration verwenden. Sie müssen Ihre Bibliotheken auf demselben Pfad auf Ihrem Build-Server hinzufügen.
Aus diesem Grund möchte ich lieber jar zum lokalen Repository hinzufügen und dies natürlich auch auf dem Build-Server tun.
quelle
Ein anderer Weg:
Bibliothek in der Baumansicht hinzufügen. Klicken Sie mit der rechten Maustaste auf diesen. Wählen Sie das Menü "Als Bibliothek hinzufügen". Ein Dialogfeld wird angezeigt, in dem Sie das Modul auswählen können. OK und es ist geschafft.
quelle