J'ai donc essayé d'ajouter ma dépendance de fichier local .jar à 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 référentiel entier: https://github.com/WalnutiQ/wAlnut/tree/version-2.3.1
java
gradle
dependency-management
build.gradle
gradle-eclipse
Wang-Zhao-Liu QM
la source
la source
Réponses:
Si vous avez vraiment besoin de prendre ce fichier .jar à partir d'un répertoire local,
Ajoutez à côté de votre gradle de module (pas le fichier de gradle de l'application):
Cependant, étant un .jar standard dans un référentiel Maven réel, pourquoi n'essayez-vous pas cela?
la source
gradle.build
fichier - Qu'est-ce que ce "fichier Gradle d'application" et le "Gradle de module"?implementation(":gson:2.2.4")
semble être le moyen de le faire.Selon la documentation , utilisez un chemin relatif pour une dépendance de jar locale comme suit:
la source
Vous pouvez également effectuer cette opération en incluant tous les fichiers JAR dans le référentiel local. De cette façon, vous n'auriez pas à le spécifier à chaque fois.
la source
Ce qui suit fonctionne pour moi:
Reportez-vous à la documentation Gradle .
la source
Vous pouvez essayer de réutiliser votre référentiel Maven local pour Gradle:
Installez le bocal 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
~/.m2/
référentiel Maven localActivez votre référentiel Maven local dans votre
build.gradle
fichier:la source
La réponse acceptée est bonne, cependant, j'aurais eu besoin de diverses configurations de bibliothèque dans ma génération Gradle multi-projet pour utiliser la même bibliothèque Java tierce.
L'ajout de « $ rootProject.projectDir » à l' élément de chemin « dir » dans ma fermeture « allprojects » signifiait que chaque sous-projet faisait référence au même répertoire « libs », et non à une version locale de ce sous-projet:
EDIT par Quizzie: changé "$ {rootProject.projectDir}" en "$ rootProject.projectDir" (fonctionne dans la dernière version de Gradle).
la source
Une 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 d'abord traduites. Voici un exemple de la façon dont j'ai ajouté un .JAR local à ma génération à l'aide de Kotlin DSL:
N'oubliez pas que si vous utilisez Windows, vos barres obliques inverses devront être échappées:
N'oubliez pas non plus que les guillemets doivent être des guillemets doubles et non des guillemets simples.
Modifier pour 2020:
Les mises à jour de Gradle sont obsolètes
compile
ettestCompile
en faveur deimplementation
ettestImplementation
. Ainsi, le bloc de dépendance ci-dessus ressemblerait à ceci pour les versions actuelles de Gradle:la source
compile(project(":MyProject"))
:, où "MyProject" est défini dans votresettings.gradle
fichier avec quelque chose commeinclude("MyProject")
.Un moyen simple de le faire est
il compilera tous les fichiers .jar dans votre répertoire libs dans l'application.
la source
Je n'ai pas pu faire fonctionner la suggestion ci-dessus sur https://stackoverflow.com/a/20956456/1019307 . Cela a fonctionné pour moi cependant. Pour un fichier
secondstring-20030401.jar
que j'ai stocké dans unlibs/
répertoire à la racine du projet:la source
La question a déjà reçu une réponse détaillée. Je veux encore ajouter quelque chose qui me semble très surprenant:
La tâche "dépendances gradle" ne répertorie aucune dépendance de fichier. Même si vous pourriez le penser, car ils ont été spécifiés dans le bloc "dépendances" après tout.
Ne vous fiez donc pas à la sortie de ceci pour vérifier si vos fichiers lib locaux référencés fonctionnent correctement.
la source
La solution qui a fonctionné pour moi est l'utilisation de fileTree dans le fichier build.gradle. Conservez le .jar qui doit être ajouté comme dépendance dans le dossier libs. Donnez le code ci-dessous dans le bloc dependenices dans build.gradle:
la source
La meilleure façon de le faire est d'ajouter ceci dans votre fichier build.gradle et de cliquer sur l'option de synchronisation
la source
Vous pouvez ajouter un pot en faisant:
Pour gradle, entrez simplement le code suivant
build.gradle
:et pour maven il suffit de suivre les étapes:
Pour Intellij: Fichier-> structure du projet-> modules-> onglet dépendance-> cliquez sur + signe-> pot et dépendance-> sélectionnez les pots que vous souhaitez importer-> ok-> appliquer (si visible) -> ok
N'oubliez pas que si vous avez une
java.lang.NoClassDefFoundError: Could not initialize class
exception au moment de l'exécution, cela signifie que les dépendances dans jar ne sont pas installées pour cela, vous devez ajouter toutes les dépendances dans le projet parent.la source
Goto File -> Project Structure -> Modules -> app -> Dependencies Tab -> Click on + (button) -> Select File Dependency -> Select jar file in the lib folder
Cette étape ajoutera automatiquement votre dépendance à gralde
Très simple
la source
build.gradle
.Soyez prudent si vous utilisez l'intégration continue, vous devez ajouter vos bibliothèques dans le même chemin sur votre serveur de build.
Pour cette raison, je préfère ajouter du jar au référentiel local et, bien sûr, faire de même sur le serveur de build.
la source
Autrement:
Ajoutez une bibliothèque dans l'arborescence. Faites un clic droit sur celui-ci. Sélectionnez le menu "Ajouter en tant que bibliothèque". Une boîte de dialogue apparaît, vous permettant de sélectionner le module. OK et c'est fait.
la source