it-swarm.com.de

Wie füge ich der build.gradle-Datei die Abhängigkeit der lokalen .jar-Datei hinzu?

Daher habe ich versucht, meiner build.gradle-Datei die Abhängigkeit meiner lokalen .jar-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 referencedLibraries-Ordner 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

524
Q Liu

Wenn Sie das .jar wirklich aus einem lokalen Verzeichnis nehmen müssen,

Füge neben deinem Modul gradle hinzu (Nicht die App gradle Datei):

repositories {
   flatDir {
       dirs 'libs'
   }
}


dependencies {
   implementation name: 'gson-2.2.4'
}

Als Standard-.jar-Datei in einem tatsächlichen Maven-Repository können Sie dies jedoch ausprobieren.

repositories {
   mavenCentral()
}
dependencies {
   implementation 'com.google.code.gson:gson:2.2.4'
}
415
Jorge_B

Verwenden Sie gemäß der Dokumentation einen relativen Pfad für eine lokale Jar-Abhängigkeit wie folgt:

dependencies {
    implementation files('libs/something_local.jar')
}
589
leeor

Sie können dies auch tun, indem Sie alle JARs in das lokale Repository aufnehmen. Auf diese Weise müssten Sie es nicht jedes Mal angeben.

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}
291
Nightwolf

Folgendes funktioniert für mich:

compile fileTree(dir: 'libs', include: '*.jar')

Siehe Gradle-Dokumentation .

45
Misha

Sie können versuchen, Ihr lokales Maven-Repository für Gradle erneut zu verwenden:

  • Installieren Sie die JAR in Ihrem lokalen Maven-Repository:

    mvn install:install-file -Dfile=utility.jar -DgroupId=com.company -DartifactId=utility -Dversion=0.0.1 -Dpackaging=jar

  • Vergewissern Sie sich, dass Sie die JAR-Datei in Ihrem lokalen Maven-Repository ~/.m2/ installiert haben

  • Aktivieren Sie Ihr lokales Maven-Repository in Ihrer build.gradle -Datei:

    repositories {
      mavenCentral()  
      mavenLocal()  
    }
    
    dependencies {  
      implementation ("com.company:utility:0.0.1")  
    }
    
    • Jetzt sollte das Jar für die Implementierung in Ihrem Projekt aktiviert sein
29
Daniel Mora

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 von Drittanbietern zu verwenden.

Das Hinzufügen von '$ rootProject.projectDir' zu dem 'dir' Pfadelement in meinem 'allprojects' Abschluss bedeutete, dass jedes Unterprojekt auf dasselbe verwiesen hat ' libs 'Verzeichnis und not a Version lokal für dieses Unterprojekt:

//gradle.build snippet
allprojects {
    ...

    repositories {
        //All sub-projects will now refer to the same 'libs' directory
        flatDir {
            dirs "$rootProject.projectDir/libs"
        }
        mavenCentral()
    }

    ...
}

BEARBEITEN durch Quizzie: "$ {rootProject.projectDir}" wurde in "$ rootProject.projectDir" geändert (funktioniert in der neuesten Gradle-Version).

27
Big Rich

Ein einfacher Weg, dies zu tun, ist

compile fileTree(include: ['*.jar'], dir: 'libs')

es werden alle .jar-Dateien in Ihrem libs-Verzeichnis in App kompiliert.

12
ZygoteInit

Ich konnte den obigen Vorschlag unter https://stackoverflow.com/a/20956456/1019307 nicht zum Laufen bringen. Das hat aber bei mir geklappt. Für eine Datei secondstring-20030401.jar, die ich in einem libs/ -Verzeichnis im Stammverzeichnis des Projekts gespeichert habe:

repositories {
    mavenCentral()
    // Not everything is available in a Maven/Gradle repository.  Use a local 'libs/' directory for these.
    flatDir {
       dirs 'libs'
   }
}

...

compile name: 'secondstring-20030401'
8
HankCa

Die Frage wurde bereits ausführlich beantwortet. Ich möchte noch etwas hinzufügen, das für mich sehr überraschend erscheint:

In der Task "Gradle-Abhängigkeiten" werden keine Dateiabhängigkeiten aufgelistet. Auch wenn Sie vielleicht glauben, dass sie doch im "Dependencies" -Block angegeben wurden.

Verlassen Sie sich also nicht auf die Ausgabe, um zu überprüfen, ob Ihre referenzierten lokalen lib-Dateien korrekt funktionieren.

6
icyerasor

Die Lösung, die bei mir funktioniert hat, ist die Verwendung von fileTree in der build.gradle-Datei. Behalten Sie die .jar-Datei, die als Abhängigkeit hinzugefügt werden muss, im libs-Ordner. Geben Sie den folgenden Code in Abhängigkeitsblock in build.gradle ein:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}
6
Jince Martin

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 diese zuerst zu übersetzen. Hier ist ein Beispiel, wie ich meinem Build mit Kotlin DSL eine lokale .JAR-Datei hinzugefügt habe:

dependencies {
    compile(files("/path/to/file.jar"))
    testCompile(files("/path/to/file.jar"))
    testCompile("junit", "junit", "4.12")
}

Denken Sie daran, dass unter Windows die umgekehrten Schrägstriche maskiert werden müssen:

...
compile(files("C:\\path\\to\\file.jar"))
...

Denken Sie auch daran, dass Anführungszeichen doppelte Anführungszeichen und keine einfachen Anführungszeichen sein müssen.

6

Am besten fügen Sie dies in Ihre build.gradle-Datei ein und klicken auf die Synchronisierungsoption

dependency{
    compile files('path.jar')
}
5
saunlogan

Sie können jar hinzufügen, indem Sie:

Für gradle gib einfach folgenden Code in build.gradle ein:

dependencies {
...
compile fileTree(dir: 'lib', includes: ['suitetalk-*0.jar'])
...
}

und für Maven folgen Sie einfach den Schritten:

Für Intellij: Datei-> Projektstruktur-> Module-> Registerkarte Abhängigkeit-> Klicken Sie auf + Zeichen-> Jar und Abhängigkeit-> Wählen Sie die zu importierenden Jars aus-> OK-> Anwenden (falls sichtbar) -> OK

Denken Sie daran, dass wenn Sie zur Laufzeit eine Java.lang.NoClassDefFoundError: Could not initialize class -Ausnahme haben, dies bedeutet, dass Abhängigkeiten in jar nicht installiert sind und Sie alle Abhängigkeiten im übergeordneten Projekt hinzufügen müssen.

1
ankit

Gehe zu Datei -> Projektstruktur -> Module -> App -> Registerkarte Abhängigkeiten -> Klicken Sie auf + (Schaltfläche) -> Dateiabhängigkeit auswählen -> JAR-Datei im Ordner lib auswählen

Mit diesen Schritten wird Ihre Abhängigkeit automatisch zu gralde hinzugefügt

Sehr einfach

1
Jaya