2 votes

Utilisation de Gradle pour inclure ma propre bibliothèque Java dans un projet

Avertissement : je suis très novice en Gradle et en gestion des dépendances. J'ai essayé de lire la documentation mais je n'ai pas réussi à traverser la quantité hallucinante d'informations. Je n'ai pas non plus trouvé de réponse utile à ma question, alors désolé si cela a déjà été répondu auparavant, j'ai essayé de chercher...

Donc, ma situation est la suivante : j'ai un projet Java qui est censé me fournir un moyen standardisé d'utiliser des configurations de programmes à l'aide de fichiers JSON. Ce projet dépend de Gson. Jusque-là tout va bien, j'ai simplement ajouté compile 'com.google.code.gson:gson:2.6.2' aux dépendances de ce projet et tout va bien, la bibliothèque apparaît comme Bibliothèque Externe dans Idea, et je peux l'utiliser et tout.

Maintenant, je veux utiliser ce projet dans d'autres projets pour exploiter les configurations. Et je ne peux absolument pas comprendre comment ajouter le projet ou le jar de la bibliothèque à d'autres projets à l'aide de Gradle.

J'ai essayé des choses comme copier le jar de la bibliothèque dans le dossier libs des projets à utiliser et ajouter compile files('./libs/myLibrary-0.0.1.jar') à la liste des dépendances, ou ajouter le jar en tant que bibliothèque via la chose de Structure du Projet dans Idea. Aucune de ces méthodes n'a fonctionné, et je suis à bout.

Toute aide serait appréciée.

2voto

Malt Points 4082

Si vous ou votre entreprise disposez d'un référentiel binaire central, tel que artifactory, alors vous devriez configurer la publication de votre jar là-bas.

Mais étant donné que vous n'avez pas mentionné de référentiel central, je suppose que vous n'en avez pas, et que vous essayez simplement de faire fonctionner votre dépendance sur une seule machine. Dans ce cas, voici ce que je suggère de faire :

Ajoutez le plugin maven-publish à votre projet de dépendance :

apply plugin: 'maven-publish'

Assurez-vous également de définir les variables group, version et name de votre projet (voir ici). Vous en aurez besoin plus tard. Ensuite, ajoutez une définition de publication qui indiquera à maven-publish de publier toutes les classes :

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
}

Avec ces paramètres, vous devriez maintenant être en mesure d'exécuter la tâche publishToMavenLocal. Faites-le. En cas de succès, le jar de dépendance devrait maintenant se trouver dans votre référentiel maven local (~/.m2/repository)

Maintenant, ajoutez mavenLocal en tant que dépôt dans le projet qui a besoin de la dépendance :

repositories {
    mavenLocal()
}

(vous voudrez peut-être ajouter des dépôts supplémentaires ici, tels que mavenCentral())

Ajoutez également le groupe, le nom et la version de votre jar, tout comme votre dépendance gson : compile 'yourgrou:yourname:yourversion. Gradle devrait maintenant être en mesure de récupérer la dépendance depuis le référentiel maven local.

1voto

techtabu Points 2045

Vous avez quelques options. La première et la plus simple est de construire votre projet de base et de le rendre disponible dans votre dépôt maven local et de l'utiliser. Pour rendre votre projet disponible dans votre dépôt maven local, utilisez le plugin maven. Dans votre fichier build.gradle, ajoutez ce qui suit.

apply plugin: 'maven'

Maintenant, utilisez gradle clean build install pour publier le jar dans votre dépôt local. Rappelez-vous que la tâche install est celle qui place réellement votre jar dans votre local. Ensuite, allez dans votre autre projet qui dépend de celui-ci et indiquez-lui d'aller chercher dans votre dépôt maven local en ajoutant mavenLocal aux dépôts.

repositories {
    mavenCentral()
    mavenLocal()
}

Une autre option, si vous utilisez un dépôt centralisé dans votre entreprise, est de publier votre jar de base et de l'utiliser dans l'autre projet. Consultez la documentation.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X