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 référencé Libraries 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, l'erreur suivante apparaît:
error: package com.google.gson does not exist
import com.google.gson.Gson;
Voici mon rapport complet: https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1
Si vous avez vraiment besoin de prendre ce fichier .jar depuis un répertoire local,
Ajoutez à côté de votre diplôme (pas le fichier de l'application):
repositories {
flatDir {
dirs 'libs'
}
}
dependencies {
implementation name: 'gson-2.2.4'
}
Cependant, étant un fichier .jar standard dans un référentiel Maven, pourquoi ne pas essayer ceci?
repositories {
mavenCentral()
}
dependencies {
implementation 'com.google.code.gson:gson:2.2.4'
}
Selon la documentation , utilisez un chemin relatif pour une dépendance de jar locale comme suit:
dependencies {
implementation files('libs/something_local.jar')
}
Vous pouvez également faire cela en incluant tous les 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'])
}
Ce qui suit fonctionne pour moi:
compile fileTree(dir: 'libs', include: '*.jar')
Reportez-vous à la Documentation Gradle .
Vous pouvez essayer de réutiliser votre référentiel Maven local pour Gradle:
Installez le fichier jar dans votre référentiel Maven local:
mvn install:install-file -Dfile=utility.jar -DgroupId=com.company -DartifactId=utility -Dversion=0.0.1 -Dpackaging=jar
Vérifiez que le fichier jar est installé dans votre référentiel Maven local ~/.m2/
Activez votre référentiel Maven local dans votre fichier build.gradle
:
repositories {
mavenCentral()
mavenLocal()
}
dependencies {
implementation ("com.company:utility:0.0.1")
}
La réponse acceptée est bonne, cependant, j'aurais eu besoin de diverses configurations de bibliothèque au sein de ma construction Gradle multi-projets pour utiliser la même bibliothèque Java tierce.
L'ajout de '$ rootProject.projectDir' à l'élément de chemin 'dir' dans ma 'tousprojects' signifiait que chaque sous-projet était référencé de la même manière ' libs 'répertoire, et pas a version locale de 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 by Quizzie: remplacé "$ {rootProject.projectDir}" par "$ rootProject.projectDir" (fonctionne dans la dernière version de Gradle).
Un moyen simple de le faire est
compile fileTree(include: ['*.jar'], dir: 'libs')
il compilera tous les fichiers .jar de votre répertoire libs dans App.
Je n'ai pas pu obtenir la suggestion ci-dessus à https://stackoverflow.com/a/20956456/1019307 au travail. Cela a fonctionné pour moi cependant. Pour un fichier secondstring-20030401.jar
que j'ai stocké dans un répertoire libs/
à 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'
La question a déjà reçu une réponse détaillée. Je veux toujours ajouter quelque chose qui semble très surprenant pour moi:
La tâche "dépendances de niveaux" ne répertorie aucune dépendance de fichiers. Même si vous pensez bien, comme ils ont été spécifiés dans le bloc "dépendances" après tout ..
Donc, ne vous fiez pas à la sortie de ceci pour vérifier si vos fichiers lib locaux référencés fonctionnent correctement.
La solution qui a fonctionné pour moi est l'utilisation de fileTree dans un fichier build.gradle. Conservez le fichier .jar à ajouter comme dépendance dans le dossier libs. Le code ci-dessous dans le bloc dependenices dans build.gradle:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
}
ne solution pour ceux qui utilisent Kotlin DSL
Les solutions ajoutées jusqu’à présent sont excellentes pour l’OP, mais ne peuvent pas être utilisées avec Kotlin DSL sans les avoir au préalable traduites. Voici un exemple montrant comment j'ai ajouté un fichier .JAR local à ma construction à l'aide de Kotlin DSL:
dependencies {
compile(files("/path/to/file.jar"))
testCompile(files("/path/to/file.jar"))
testCompile("junit", "junit", "4.12")
}
Rappelez-vous que si vous utilisez Windows, vous devez échapper vos barres obliques inverses:
...
compile(files("C:\\path\\to\\file.jar"))
...
Et rappelez-vous également que les guillemets doivent être des guillemets doubles et non des guillemets simples.
La meilleure façon de le faire est d’ajouter ceci dans votre fichier build.gradle et de cliquer sur l’option sync
dependency{
compile files('path.jar')
}
Vous pouvez ajouter jar faire:
Pour gradle, il suffit de mettre le code suivant dans build.gradle
:
dependencies {
...
compile fileTree(dir: 'lib', includes: ['suitetalk-*0.jar'])
...
}
et pour maven il suffit de suivre les étapes suivantes:
Pour Intellij: Fichier-> structure du projet-> modules-> onglet dépendance-> cliquez sur + signe-> jar et dépendance-> sélectionnez les jar que vous souhaitez importer-> ok-> appliquer (si visible) -> ok
N'oubliez pas que si vous rencontrez une exception Java.lang.NoClassDefFoundError: Could not initialize class
au moment de l'exécution, cela signifie que les dépendances dans le fichier jar non installées pour cette raison doivent être ajoutées à toutes les dépendances du projet parent.
Goto File -> Structure du projet -> Modules -> app -> Onglet Dépendances -> Cliquez sur + (bouton) -> Sélectionnez une dépendance de fichier -> Sélectionnez le fichier jar dans le dossier lib
Cette procédure ajoutera automatiquement votre dépendance à gralde
Très simple