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
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
A voir également:
- Spring boot multimodule
- Whatsapp multi compte - Accueil - WhatsApp
- Multi boot - Guide
- Multi bureau windows 10 - Guide
- Logiciel affichage multi-écran gratuit - Télécharger - Outils professionnels
- Multi fenetre windows 11 - Guide
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 019
1 févr. 2021 à 08:07
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.
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.
1 févr. 2021 à 12:10
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?
Modifié le 1 févr. 2021 à 14:01
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.
3 févr. 2021 à 19:39
3 févr. 2021 à 20:34
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.