Top 5 des idées et des sujets de projets multi-modules Maven passionnants pour les débutants [2022]
Publié: 2021-05-27Comme tout projet devient plus complexe et en couches, la bonne façon de le gérer est de le diviser en différents modules. Dans Maven, bien qu'il soit possible de lier ces multiples projets en tant que dépendances, cela rend le processus de construction beaucoup plus complexe. Par conséquent, l'approche préférée consiste à structurer le projet comme un projet multi-modulaire et à transmettre le reste à Maven.
Table des matières
Avantages de l'utilisation de plusieurs modules dans Maven
L'avantage significatif de l'utilisation de multi-modules au lieu de l'injection de dépendances ou de toute autre procédure est qu'elle réduit la duplication. Pour mieux comprendre cela, supposons que vous travaillez sur une application composée de deux modules, disons le module backend et le module frontend.
Si vous travaillez sur ces deux modules et modifiez certaines fonctionnalités qui affectent les deux modules, vous devrez créer les deux modules ou composants séparément sans outil de génération spécialisé. Ou, vous devez écrire un script pour compiler le code, exécuter des tests et afficher les résultats finaux.
Maintenant, si la complexité augmente encore plus et que votre projet comporte plus de deux modules, il deviendra progressivement plus difficile d'effectuer cette tâche sans un outil de construction spécialisé. De plus, dans des problèmes réels, vos projets peuvent nécessiter certains plugins Maven pour effectuer certaines opérations cruciales pendant tout le cycle de vie de la construction, partager des dépendances ou inclure d'autres projets BOM.
En raison de ces défis, les multi-modules de Maven sont extrêmement utiles et vous permettent de créer les modules de l'application en une seule ligne de commande. Il vous permet également de partager une grande quantité de données et de configuration entre plusieurs modules de manière transparente.
Lisez aussi: Maven Interview Question Answer
Termes clés à connaître concernant les projets multi-modules dans Maven
1. POM parent (module d'objet de projet)
Chaque fichier pom.xml dans Maven - pour le support de l'héritage - a un POM parent, connu sous le nom de Super POM. Cela peut être situé dans les fichiers binaires Maven, et vous pouvez également fusionner les deux fichiers pour créer le POM effectif.
Ainsi, vous pouvez créer votre propre fichier pom.xml pour servir de parent à votre projet. Une fois que vous avez fait cela, vous pouvez ajouter toutes les dépendances et la configuration, le définir comme parent des modules enfants et activer l'héritage. À l'exception de l'héritage, Maven fournit également l'agrégation. Le POM parent qui exploite la fonctionnalité d'agrégation est connu sous le nom de POM agrégé - ce type de POM déclare explicitement les modules enfants dans le fichier pom.xml.
2. Sous-modules
Les sous-projets, également appelés sous-modules, peuvent être compris comme des modules Maven standard qui héritent du POM parent. En utilisant l'héritage, les modules partagent diverses dépendances et configurations. Cependant, si vous avez besoin de construire le projet rapidement, vous devrez déclarer explicitement les sous-modules dans le POM parent, ce qui en fera le POM agrégé.
3. Le projet multi-module simple
App et util sont deux modules contenus dans The Simple Multi-Module Project. Le module util est requis pour fournir une méthode statique pour joindre ou ajouter différentes chaînes à l'aide de la bibliothèque Apache Commons Lang, et le module app est nécessaire pour appeler le module util. Voici un extrait du fichier app.java :
simple-multi/app/src/main/java/app/App.java
Application de classe publique {
public static void main(String[] args) {
System.out.println(new App().greet("Monde!"));
}
public String greet(String name) {
return Util.join("Bonjour ", nom);
}
}
Pour générer le projet, exécutez
$ cd simple-multi
$ mvn propre test
Le générateur de code de Maven construit les deux modules de votre projet dans le bon ordre, effectue les tests nécessaires et affiche les résultats dans un format récapitulatif facilement compréhensible, comme ci-dessous :
4. Structure d'un projet multi-module
Voici la disposition d'un projet multi-module simple :
Le répertoire simple-multi est le répertoire racine et est présent tout en haut de l'ensemble du projet. Il contient le POM de niveau supérieur (POM parent), mais ce POM parent n'a pas de dossier source.
Le répertoire de niveau supérieur contient également app et util, qui sont des projets Maven réguliers avec des répertoires et un fichier pom.xml.
Le POM de niveau supérieur et le POM de module diffèrent légèrement du POM normal. Voyons en détail ce qu'ils contiennent :
5. POM de haut niveau
Un POM parent ou un POM de niveau supérieur est requis par le projet multi-module Maven dans le répertoire racine.
Le POM de niveau supérieur définit les aspects importants et les coordonnées du projet comme l'artefactID, la version et le groupID, comme dans tout projet normal. Cependant, le type d'emballage pour cela n'est pas dans le format habituel de guerre ou de pot mais comme un pom. C'est parce que le module de niveau supérieur ne contient aucun autre répertoire source. Les éléments modules/module ajoutent les modules app et util.
Le contenu de ce fichier comprend :
simple-multi/pom.xml
<projet xmlns=”http://maven.apache.org/POM/4.0.0″ xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>
<modelVersion>4.0.0</modelVersion>
<groupId>org.codetab</groupId>
<artifactId>simple-multi</artifactId>
<version>1.0</version>
<emballage>pom</emballage>
<modules>
<module>application</module>
<module>util</module>
</modules>
</projet>
Pour résumer, le POM de niveau supérieur spécifie le type d'emballage pom et répertorie explicitement tous les sous-modules.
Gardez à l'esprit que vous n'avez pas à vous soucier de l'ordre lors de la déclaration des sous-modules dans le POM parent car Maven utilise un réacteur pour ordonner correctement les modules répertoriés. Dans le simple-multi, maven construit le module util puis l'application puisque l'application dépend de util.
5. Module POM
Le dossier Module POM contient un dossier source normal et son propre fichier pom.xml. Le contenu de cet util/pom.xml est :
util/pom.xml
<projet xmlns=”http://maven.apache.org/POM/4.0.0″ xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=”http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.codetab</groupId>
<artifactId>simple-multi</artifactId>
<version>1.0</version>
</parent>
<artifactId>util</artifactId>
<propriétés>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</propriétés>
<dépendances>
<dépendance>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.6</version>
</dépendance>
<dépendance>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dépendance>
</dépendances>
</projet>
Il n'est pas nécessaire de spécifier le groupID et la version du module car ils seront hérités du parent. Le bloc dependencies/dependency définit les dépendances du module util – commons-lang3 et JUnit.
Maintenant, regardons le app/pom.xml, qui est assez similaire au util/pom.xml, à l'exception du bloc de dépendances, qui est illustré ci-dessous :
app/pom.xml
….
<dépendances>
<dépendance>
<groupId>org.codetab</groupId>
<artifactId>util</artifactId>
<version>1.0</version>
</dépendance>
….
</dépendances>
Le module app utilise les méthodes du module util, et pour cela, le app/pom.xml spécifie util comme dépendance.
Pour résumer tout ce qui est expliqué ci-dessus :
Le projet de niveau supérieur (projet parent),
- Définit pom.xml de niveau supérieur, qui spécifie toutes les coordonnées et sous-modules, et définit le type d'emballage comme pom.
- Contient les autres dossiers de modules.
- Ne contient aucun dossier source.
Chacun des dossiers de module n'est rien d'autre que des répertoires de projet Maven normaux. Cependant, le fichier pom.xml contient :
- L'élément parent spécifie le parent du module.
- Les coordonnées du module sont spécifiées dans l'élément artefactID. GroupID et la version ne sont pas mentionnés car ils sont hérités des coordonnées parent.
- La dépendance, si un module dépend d'un autre, est mentionnée dans l'élément dependencies/dependency.
Exécution du projet multi-module
La commande $ mvn clean package peut être utilisée pour compiler, tester et empaqueter le multi-module. Cependant, pour l'exécuter avec le plugin maven-exec, il faut suivre les étapes suivantes :
Exécutez les commandes suivantes :
$ cd simple-multi
Installation propre de $ mvn
$ mvn exec:java -pl app -Dexec.mainClass=app.App
La commande install installe les modules dans votre référentiel local, où vous pouvez ensuite exécuter le projet. L'option -pl app informe le plugin exec du module app et exécute sa classe app.App. Sans installation, le processus de construction échoue, car Maven ne peut pas télécharger et résoudre la dépendance du module util.
Cependant, il est assez fastidieux d'installer le projet dans un référentiel local à chaque fois avant chaque exécution, surtout en phase de développement. Pour faciliter cela, vous pouvez exécuter directement le multi-module dans Eclipse IDE sans effectuer l'étape d'installation.
Apprenez des cours de développement de logiciels en ligne dans les meilleures universités du monde. Gagnez des programmes Executive PG, des programmes de certificat avancés ou des programmes de maîtrise pour accélérer votre carrière.
Conclusion
Nous espérons que cet article vous a aidé à démarrer avec le processus Maven Multi-Module. Comme pour tout ce qui est nouveau, il s'agit simplement d'avoir le coup de main initial. Une fois que vous avez compris la structure et le fonctionnement de base, vous serez sur la bonne voie pour gérer de manière transparente plusieurs modules dans Maven.
Si vous souhaitez en savoir plus sur le développement de logiciels à pile complète, consultez le programme exécutif PG de upGrad & IIIT-B en développement de logiciels - Spécialisation en développement de pile complète qui est conçu pour les professionnels et offre plus de 500 heures de formation rigoureuse, 9 + projets et affectations, statut d'ancien de l'IIIT-B, projets de synthèse pratiques et aide à l'emploi avec les meilleures entreprises.
Que sont les projets multi-modules ?
Les modules multiples vous permettent de regrouper des artefacts communs dans un seul module afin de réduire le nombre de modules nécessaires pour créer et déployer un projet. Les projets multi-modules peuvent être construits à partir de deux modules ou plus en définissant une relation parent-enfant entre ces modules. Le module parent d'un projet multi-module est appelé le module racine. Le module enfant d'un projet multi-module est appelé un sous-module. Le module racine est la pierre angulaire d'une construction multi-module. Les modules enfants ne peuvent pas être construits seuls, ils doivent être construits avec le module racine.
Qu'est-ce qu'un fichier de modèle d'objet de projet dans maven ?
Un fichier de modèle d'objet de projet (POM) est un fichier décrivant un projet. Il s'agit de l'unité de travail fondamentale par laquelle les développeurs publient des artefacts dans un référentiel. Un modèle d'objet de projet est un simple fichier texte qui définit un projet, répertorie ses composants et définit ce qu'ils font. Le modèle d'objet de projet est un composant clé du cadre de gestion de projet logiciel Maven. C'est un type spécial de document XML qui compose un projet Maven. Un fichier pom peut être considéré comme une description d'un projet. Il indique à Maven en quoi consiste le projet ainsi qu'une description de chacun des modules du projet, de leurs dépendances et de leurs versions. Les modules sont les blocs de construction d'un projet Maven. Les modules et leurs dépendances sont utilisés pour construire le projet final.
Comment créer un projet multi-module maven ?
Pour créer un projet multi-module Maven, vous devez définir un pom parent et vous assurer que tous les sous-modules en héritent. Il est également important de noter que vous pouvez également mettre tous les sous-modules dans un seul référentiel et pointer le pom parent vers celui-ci. Un projet multi-module maven est composé d'un pom parent et d'un ou plusieurs sous-modules. Le pom parent peut définir les métadonnées du projet maven multi-module, telles que l'ID d'artefact, la version, l'empaquetage et les dépendances. Les sous-modules peuvent hériter des métadonnées du parent, et le pom parent peut définir une configuration de projet de haut niveau, telle que l'organisation et la description du projet.