J'essaye de créer un projet multi-module avec les mêmes dépendances.
Par exemple j'ai:
Module A (parent)
| Module D
| Module B
| Module C
Les modules B et C utilisent exactement la même dépendances et contient seulement 1 classe chacun. Je veux que chaque module crée son propre JAR. Le truc, c'est que je ne veux pas construire de fat jar (car j'aurai beaucoup de modules comme celui-ci à l'avenir)
Y a-t-il un moyen pour les modules B et C d'utiliser le même dépendance? J'ai essayé avec dependencyManagement mais ce n'est pas tout à fait ce que je veux car les deux jars contiennent les dépendances et je ne veux pas ça.
Y a-t-il un moyen d'y parvenir? Peut-être en ayant un module D qui ne contient que les dépendances et chaque jar utilisera le "D.jar"? Mais comment lier les modules B et C pour utiliser les dépendances D?
Module A (parent)
| Module B
| Module C
3 Réponses :
Vous pouvez écrire un pom.xml distinct comme un artefact seul.
Ce pom aura vos dépendances x et y . Ensuite, vous donnez à vos modules la dépendance à ce pom (via son groupe, son artefact et sa version).
C'est un peu ce que j'ai réalisé avec dependencyManagement, je définis les dépendances dans le Parent et je référence ces dépendances dans les sous-modules. Mais le JAR du sous-module sera un gros Jar contenant toutes ces dépendances.
Que vous obteniez un soi-disant fat jar ou non est indépendant de la façon dont vous définissez les dépendances. Cela dépend de la façon dont vous construisez votre artefact (avec ou non des dépendances).
Je sais, le fait est que j'ai 2 JAR avec 2 classes différentes mais avec les mêmes dépendances à l'intérieur de chaque JAR. je souhaite supprimer la duplication des dépendances
Si un sous-module peut fonctionner sans les dépendances du module parent, il peut être créé en tant que module indépendant. Même avec la façon dont vous proposez, les dépendances du module A seront transmises à B et C via D et c'est ainsi que fonctionne la gestion des dépendances dans POM.
Oui, le fait est que je ne veux pas les dépendances dans le Jar mais à la place un Jar contenant uniquement la dépendance (module D) et B et C sans elle mais utilise D
J'ai trouvé la réponse,
Le module A gérera la version des dépendances (dependencyManagement) B et C définiront les dépendances nécessaires
Le module D sera un projet différent contenant des utils, des communs et toutes les dépendances dans un uber Jar. Ce sera sur un repo Maven domestique.
Module A (parent)
| Module B
| Module C
Module D
| Utils
| common