Come aggiungere la dipendenza del file .jar locale al file build.gradle?

Così ho provato ad aggiungere la mia dipendenza dal file .jar locale al mio file build.gradle:

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') } 

E puoi vedere che ho aggiunto i file .jar nella cartella referencedLibraries qui: https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1/referencedLibraries

Ma il problema è che quando eseguo il comando: gradle build sulla riga di comando ottengo il seguente errore:

 error: package com.google.gson does not exist import com.google.gson.Gson; 

Ecco il mio intero pronti contro termine: https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1

    Se hai davvero bisogno di prendere quel .jar da una directory locale,

    Aggiungi accanto al tuo gradle del modulo (non il file gradle dell’app):

     repositories { flatDir { dirs 'libs' } } dependencies { compile name: 'gson-2.2.4' } 

    Tuttavia, essendo uno standard .jar in un vero repository maven, perché non provi questo?

     repositories { mavenCentral() } dependencies { compile 'com.google.code.gson:gson:2.2.4' } 

    Secondo la documentazione , utilizzare un percorso relativo per una dipendenza locale del jar come segue:

     dependencies { compile files('libs/something_local.jar') } 

    Si potrebbe anche fare ciò che includerebbe tutti i JAR nel repository locale. In questo modo non dovresti specificarlo ogni volta.

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

    Il seguente funziona per me:

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

    Fare riferimento alla documentazione Gradle .

    La risposta accettata è buona, tuttavia, avrei avuto bisogno di varie configurazioni di libreria all’interno della mia build Gradle multi-progetto per utilizzare la stessa libreria Java di terze parti.

    L’aggiunta di ‘ $ rootProject.projectDirall’elementodir ‘ del percorso nella mia chiusura ‘ allprojects ‘ significava che ogni sottoprogetto faceva riferimento alla stessa directory ‘ libs ‘ e non a una versione locale per quel sottoprogetto:

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

    EDIT di Quizzie: cambiato “$ {rootProject.projectDir}” in “$ rootProject.projectDir” (funziona nella versione più recente di Gradle).

    Puoi provare a riutilizzare il tuo repository Maven locale per Gradle:

    • Installa il jar nel tuo repository Maven locale:

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

    • Verifica di aver installato il jar nel tuo repository Maven ~/.m2/ locale

    • Abilita il tuo repository Maven locale nel tuo file build.gradle :

       repositories { mavenCentral() mavenLocal() } dependencies { compile ("com.company:utility:0.0.1") } 
      • Ora dovresti avere abilitato il jar per la compilazione nel tuo progetto

    Un modo semplice per farlo è

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

    compilerà tutti i file .jar nella directory libs in App.

    Non ho potuto ottenere il suggerimento di cui sopra su https://stackoverflow.com/a/20956456/1019307 per funzionare. Questo ha funzionato per me però. Per un file secondstring-20030401.jar che ho memorizzato in una directory libs/ nella radice del progetto:

     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' 

    Il modo migliore per farlo è aggiungerlo nel file build.gradle e selezionare l’opzione di sincronizzazione

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

    Alla domanda è già stata data una risposta in dettaglio. Voglio ancora aggiungere qualcosa che mi sembra molto sorprendente:

    L’attività “Dipendenze gradle” non elenca le dipendenze dei file. Anche se si potrebbe pensare così, come sono stati specificati nel blocco “dipendenze” dopo tutto ..

    Quindi non fare affidamento sull’output di questo per verificare se i file lib locali di riferimento funzionano correttamente.

    La soluzione che ha funzionato per me è l’uso di fileTree nel file build.gradle. Tenere il .jar che deve essere aggiunto come dipendenza nella cartella libs. Fornisci il seguente codice nel blocco dependence in build.gradle:

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

    Vai a File -> Struttura progetto -> Moduli -> app -> Scheda Dipendenze -> Fai clic su + (pulsante) -> Seleziona dipendenza file -> Seleziona file jar nella cartella lib

    Questa procedura aggiungerà automaticamente la tua dipendenza a gralde

    Molto semplice

    Un altro modo:

    Aggiungi libreria nella visualizzazione ad albero. Fare clic destro su questo. Selezionare il menu “Aggiungi come libreria”. Apparirà una finestra di dialogo, ti permetterà di selezionare il modulo. OK ed è fatto.

    Fai attenzione se stai usando l’integrazione continua, devi aggiungere le tue librerie nello stesso percorso sul tuo server di build.

    Per questo motivo, preferisco aggiungere jar al repository locale e, ovviamente, fare lo stesso sul build server.