Projets multi-modules: quels intérêts?

Résolu/Fermé
Programmeranonyme343 - 31 janv. 2021 à 21:37
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 - 3 févr. 2021 à 20:34
Bonjour,
Je m'intéresse à Maven, j'ai appris qu'on pouvait avoir des projets contenant plusieurs modules mais j'aimerais savoir quel est l'intérêt d'en avoir plusieurs? Pourquoi ne pas créer tout simplement plusieurs packages pour chaque partie de l'application?
Merci d'avance pour votre réponse,
Programmeranonyme343
A voir également:

1 réponse

KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 018
1 févr. 2021 à 08:07
Bonjour,

Avec Maven, chaque livrable doit avoir son module.

Par exemple, si tu fais une application client/serveur par exemple, le client devra être dans un module, le serveur dans un autre. En général dans ce cas on fera un troisième module qui sera utilisé à la fois par le client et par le serveur.

Pour prolonger l'exemple, on peut imaginer qu'au lieu d'avoir un client, tu pourrais en avoir plusieurs : un client léger (HTML, JS...), un client lourd (Swing, Java FX), un client mobile, etc. Chaque livrable différent sera dans un module dédié.

Quant au serveur, si on respecte l'architecture multi-tiers de JEE on pourrait isoler chaque couche dans un module Maven dédié.
Ces séparations font notamment sens vis à vis des dépendances de chaque module. Par exemple Hibernate sera utile pour la couche DAO et JAX-RS sur la couche web-service, mais pas l'inverse.
Dans le cadre d'un gros projets avec plusieurs développeurs de différents niveaux, la structure Maven permet de s'assurer que le code restera propre. Impossible par exemple de faire une requête en base de données en plein milieu d'un code web-service si tu as isolé les DAO dans un autre module.

Un article qui pourrait t'intéresser :
https://forums.commentcamarche.net/forum/affich-37598446-implementation-d-une-architecture-multi-tiers-avec-spring
Dans cet exemple de code il y a un découpage de l'application serveur en 9 modules (c'est un peu extrême, mais ça peut se justifier)

Tout ceci étant dit, si dans ton application tu n'as qu'un seul livrable à faire, tu peux très bien te limiter à un seul module. Maven est un outil très puissant qui s'adapte à tous types de projets Java, y compris les plus simples.
0
Programmeranonyme343
1 févr. 2021 à 12:10
Merci pour ta réponse.
Donc si on fait un projet maven multi-module, ceux qui dépendent d'aucun autre module seront dans un fichier chacun et ceux qui dépendent entre eux seront dans un seul fichier?
Et si par ex le moduleA dépend de moduleB ,
mais moduleC dépend aussi de moduleB, Il y aura deux fichier avec un moduleA+moduleB et l'autre moduleC+moduleB?
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 018 > Programmeranonyme343
Modifié le 1 févr. 2021 à 14:01
Chaque module Maven devra avoir son propre dossier, avec chacun un pom.xml à la racine de leur dossier, puis autant de fichiers de code que nécessaire.

Si A doit dépendre de B alors il faudra que dans le pom.xml de A on ajoute une dépendance vers B.
Quand Maven va construire le projet, il compilera d'abord B, puis il s'en servira pour compiler A.
Idem si C doit dépendre de B, il suffit de le configurer dans le pom.xml de C

Remarque : à aucun moment on a besoin de configurer le pom.xml de B pour lui indiquer qu'il va être utilisé par A ou C.
0
Programmeranonyme343 > KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024
3 févr. 2021 à 19:39
Au fait j'ai une question. Où est ce qu'on doit mettre la classe main?
0
KX Messages postés 16752 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 août 2024 3 018 > Programmeranonyme343
3 févr. 2021 à 20:34
Ça ne change rien concernant la classe main, tu la mets avec le reste du code java, dans le package que tu veux avec le nom de la classe que tu veux.

Pour commencer tu pourrais regarder cet article :
https://forums.commentcamarche.net/forum/affich-37593827-debuter-avec-maven

Remarque : si tu as plusieurs modules tu peux faire plusieurs main, un par livrable. Mais un module n'est pas obligé d'avoir une méthode main, c'est même assez fréquent de ne pas en avoir.
0