Question Comment ajouter la dépendance du fichier .jar local au fichier build.gradle?


J'ai donc essayé d'ajouter ma dépendance de fichier .jar locale à mon fichier 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')
} 

Et vous pouvez voir que j'ai ajouté les fichiers .jar dans le dossier referencedLibraries ici: https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1/referencedLibraries

Mais le problème est que lorsque j'exécute la commande: gradle build sur la ligne de commande, j'obtiens l'erreur suivante:

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

Voici mon repo entier: https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1


418
2017-12-20 09:14


origine


Réponses:


Si vous avez vraiment besoin de prendre ce fichier .jar à partir d'un répertoire local,

Ajouter à côté de votre module gradle (pas le fichier gradle de l'application):

repositories {
   flatDir {
       dirs 'libs'
   }
}


dependencies {
   compile name: 'gson-2.2.4'
}

Cependant, étant un .jar standard dans un référentiel maven réel, pourquoi ne pas essayer cela?

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

337
2017-12-20 09:21



Selon La documentation, utilisez un chemin relatif pour une dépendance de jar locale comme suit:

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

474
2018-01-06 18:12



Vous pourriez également faire ceci qui inclurait tous les fichiers JAR dans le référentiel local. De cette façon, vous n’auriez pas à le spécifier à chaque fois.

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

244
2018-05-27 19:43



Les travaux suivants pour moi:

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

Se référer au Documentation Gradle.


27
2017-08-05 17:05



La réponse acceptée est bonne, cependant, j'aurais eu besoin de diverses configurations de bibliothèque dans ma compilation Gradle multi-projets pour utiliser la même bibliothèque Java tierce.

Ajouter '$ rootProject.projectDir' au 'dir'élément de chemin dans mon'tous les projets«La fermeture signifiait que chaque sous-projet faisait référence à la même chose»libs'répertoire, et ne pas une version locale à ce sous-projet:

//gradle.build snippet
allprojects {
    ...

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

    ...
}

EDIT par Quizzie: a changé "$ {rootProject.projectDir}" en "$ rootProject.projectDir" (fonctionne dans la version la plus récente de Gradle).


23
2017-12-10 16:28



Vous pouvez essayer de réutiliser votre dépôt Maven local pour Gradle:

  • Installez le fichier JAR dans votre dépôt Maven local:

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

  • Vérifiez que le pot est installé dans votre ~/.m2/ référentiel Maven local

  • Activez votre référentiel Maven local dans votre build.gradle fichier:

    repositories {
      mavenCentral()  
      mavenLocal()  
    }
    
    dependencies {  
      compile ("com.company:utility:0.0.1")  
    }
    
    • Vous devriez maintenant avoir le jar activé pour la compilation dans votre projet

19
2017-12-23 01:40



Un moyen simple de le faire est

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

il va compiler tous les fichiers .jar dans votre répertoire libs dans App.


13
2017-08-18 09:10



Je n'ai pas pu obtenir la suggestion ci-dessus à https://stackoverflow.com/a/20956456/1019307 travailler. Cela a fonctionné pour moi cependant. Pour un fichier secondstring-20030401.jar que j'ai stocké dans un libs/ répertoire à la racine du projet:

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'

7
2018-03-18 06:40