Utilisation d'IntelliJ 2016.2.
Utiliser Gradle 2.14.1
J'ai 2 projets, chacun avec leurs propres fichiers build.gradle et des structures de répertoires distinctes:
myLib (meant to be jarred and used by others)
- build.gradle
- settings.gradle
- src/main/Java/...
sandbox (spring boot web app)
- build.gradle
- settings.gradle
- src/main/Java/...
- src/main/resources/...
J'espère que vous obtenez l'image. Dans IntelliJ, j'ai la structure de module suivante, au même niveau (pas de sous-projets):
- myLib
- sandbox
Demande simple ... Je veux utiliser myLib
au sein de l'application sandbox
. Je veux les deux modules dans le même projet afin de développer les deux.
J'ai essayé d'ajouter une dépendance de module à sandbox
pour myLib
dans IntelliJ. Pas de dé. J'ai essayé d'ajouter une référence de pot, pas de dés.
Je crois que j'ai besoin d'ajouter une dépendance dans le fichier build.gradle mais je ne peux pas comprendre comment. J'ai essayé compile files '<path to myLib.jar>'
, etc. Pas de dés.
Ceci est un modèle suivi par la plupart des projets Gradle comportant une bibliothèque, puis un exemple d'application utilisant cette bibliothèque.
- module/
- build.gradle
- src/main/Java
- library/
- build.gradle
- src/main/Java
- settings.gradle
- build.gradle
Dans ce settings.gradle
de niveau supérieur, vous avez
include ':library', ':module'
Et dans le module/build.gradle
, vous compilez ce projet inclus
dependencies {
compile project(':library')
}
Fondamentalement, le build.gradle
de niveau supérieur est un wrapper pour toutes les configurations courantes des sous-projets et des variables. Par exemple, il est généralement utilisé dans une section repositories { }
pour les URL Maven, par exemple. Tous les détails sur Gradle - Constructions multi-projets
Ce qui précède convient parfaitement pour travailler localement, mais supposons que vous vouliez partager votre référentiel avec de nombreux autres développeurs sans leur demander de télécharger du code source supplémentaire. Ensuite, vous publieriez les autres bibliothèques sur un serveur distant.
Si vos projets sont public sur GitHub, utilisez un service tel que jitpack.io . Vous pouvez également créer un compte sur Bintray OSS ou Maven Central pour que vos bibliothèques soient disponibles comme la plupart des autres.
Si vos projets sont privés au sein de votre entreprise, vous aurez besoin d’un serveur de type Maven, qu’il s’agisse d’un serveur Web générique, de Nexus ou d’Artifactory, vous pouvez l’ajouter à un bloc supplémentaire au référentiel.
repositories {
maven { url "http://some.maven.site/" }
}
Ajoutez ensuite les sources compile
ou implementation
, comme d'habitude
Enfin, Gradle 3.1 a résolu ce problème. Les builds composites sont maintenant supportés nativement. Plus ici . En bref, ajoutez cette ligne au fichier sandbox settings.gradle -
includeBuild '<PATH>/myLib'
Si vous ne pouvez pas mettre à niveau Gradle, votre seul espoir est de publier l'artefact mylib dans le dépôt maven local et d'ajouter mavenLocal () à sandbox/build.gradle.
Son discuté dans l'article https://blog.jetbrains.com/idea/2016/10/intellij-idea-2016-3-eap-gradle-composite-builds-and-Android-studio-2-2/
Fondamentalement, vous devez utiliser des versions composites. Ainsi, Vue> Fenêtres d’outils> Gradient> Cliquez avec le bouton droit sur le projet à l’aide de la bibliothèque> Configuration de construction composite> Cochez le projet de bibliothèque dont vous souhaitez utiliser la version locale.
Effectuez une reconstruction, puis utilisez la dépendance locale.