En ce moment, je trouve habituellement un pom.xml
Fichier sur le Web contenant un package pom
, copié-collé pour créer mon projet parent. Ensuite, je courais archetype:create
dans le répertoire parent pour créer des sous-modules mais archetype:create
est devenu obsolète depuis lors.
Des recommandations sur la création de nouveaux projets multi-modules Maven?
Le moyen le plus simple que j'ai trouvé est d'utiliser l'archétype pom-root
Pour créer le pom de niveau supérieur puis d'utiliser plusieurs fois archetype:generate
Pour créer chaque module individuellement. Cela ajoutera automatiquement les modules au pom racine (agrégateur) et définira le pom racine comme pom parent pour chaque module (edit: apparemment, certains archétypes peuvent avoir un parent codé en dur, mais cela fonctionne pour maven-archetype-quickstart
) .
Voici la ventilation:
Créez la racine de niveau supérieur:
mvn archetype:generate \
-DarchetypeGroupId=org.codehaus.mojo.archetypes \
-DarchetypeArtifactId=pom-root \
-DarchetypeVersion=RELEASE
cd
dans le répertoire racine que vous venez de créer.
Pour chaque module:
mvn archetype:generate \
-DarchetypeGroupId=org.Apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DarchetypeVersion=RELEASE
Notez que -DarchetypeVersion=RELEASE
Ci-dessus utilisera automatiquement la dernière version de l'archétype. Vous voudrez peut-être ajouter -DgroupId=...
À chacune de ces commandes pour éviter de vous répéter.
Voici un aperçu de la façon dont vous pourriez le faire avec Intellij Idea. Commencez par créer un nouveau projet (Fichier -> Nouveau projet), puis choisissez "Module Maven":
Tapez un nom, cliquez sur suivant, ne changez rien aux étapes suivantes, cliquez sur Terminer.
Maintenant dans votre pom.xml
type <packaging>
et activer les mises à jour automatiques:
Tapez les modules:
Placez votre curseur sur m1
et appuyez sur Alt+Enter.
Module m1
sera automatiquement ajouté à votre projet. Maintenant tu peux faire Alt+Enter pour m2
et c'est tout.
Vous pouvez aussi commencer par ajouter pom.xml
_ pour un module existant de votre projet: cliquez dessus avec le bouton droit de la souris dans l'arborescence du projet, "Ajouter un support au support ...", choisissez "Maven". Cela va créer un pom.xml
.
mvn archetype:create
est obsolète en faveur de mvn archetype:generate
, alors juste le nom a changé. Il existe un archétype pour les projets multi-modules dans les référentiels officiels. Par conséquent, l'exécution de cette commande génère le résultat (minimaliste):
[axe@gromp test]$ mvn archetype:generate
..
<num>: remote -> pom-root (Root project archetype for creating multi module projects)
..
Choose a number: 109: <num>
..
[axe@gromp test]$ tree
.
└── modules.test
└── pom.xml
1 directory, 1 file
[axe@gromp test]$ cat modules.test/pom.xml
<project 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>com.example</groupId>
<artifactId>modules.test</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<name>modules.test</name>
</project>
Vous devrez donc créer la structure de dossiers et les descripteurs de modules (fichiers pom.xml) vous-même. L'utilisation d'un simple script Shell ou d'un fichier de commandes suffit facilement si vous en avez besoin plusieurs fois.
Je ne suis pas sûr de bien comprendre votre question, mais pour créer un projet multi-module, j'utilise normalement un simple pom (au niveau racine):
<?xml version="1.0" encoding="UTF-8"?>
<project 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>com.vijaykiran</groupId>
<artifactId>myproject-parent</artifactId>
<version>1.0</version>
<packaging>pom</packaging>
<modules>
<module>m1</module>
<module>m2</module>
</modules>
</project>
C'est probablement le pom parent multi-module le plus simple que vous puissiez utiliser. Le projet que vous souhaitez créer peut déjà avoir un archétype qui pourrait vous aider à créer la structure. Bien que vous puissiez obtenir de l'aide d'un IDE pour écrire vous-même le pompon, s'il existe un archétype disponible pour le type de projet que vous voulez construire, il est normalement plus facile de l'utiliser à la place.
Si vous travaillez avec Eclipse IDE, vous devez utiliser le plug-in m2Eclipse . C’est l’un des moyens les plus simples de créer des projets multi-modules. Vous pouvez ajouter Créez un module pour chaque projet maven en créant un "module Maven" dans Eclipse. Vous avez ainsi la possibilité de sélectionner un projet parent. Le plug-in fait tout, ce qui signifie qu'il copie le nouveau module dans le module parent et le modifie. fichier pom.xml.
Même réponse que Chris H. Je viens d'ajouter les options groupId, artifactId et version, et de désactiver le mode interactif.
mvn archetype:generate -DarchetypeGroupId=org.codehaus.mojo.archetypes \
-DarchetypeArtifactId=pom-root \
-DarchetypeVersion=RELEASE \
-DinteractiveMode=false \
-DgroupId=com.mycompany.app \
-DartifactId=my-app \
-Dversion=1.0.0-SNAPSHOT \
Considérons un signet de projet parent et 3 sous-modules repos, sécurité et modèle, en faisant référence à documentation Spring . Il n'a pas les dépendances comme dans la doc Spring, mais seulement la configuration de base du point de vue multi-module.
Pour créer un projet maven parent en mode non interactif/en mode batch
mvn archetype:generate \
-DarchetypeGroupId=org.codehaus.mojo.archetypes \
-DarchetypeArtifactId=pom-root \
-DarchetypeVersion=RELEASE \
-DgroupId=bookmarks \
-DartifactId=bookmarks \
-Dversion=0.0.1-SNAPSHOT \
-DinteractiveMode=false
Pour créer des sous-modules en mode non interactif/mode batch.
cd dans votre répertoire racine nouvellement créé. Se référant à répondre par @ Chris.H
-Dpackage est la structure du paquet. Ici c'est des marque-pages. Si non spécifié, il considérera artifactId comme paquet par défaut
mvn archetype:generate \
-DarchetypeGroupId=org.Apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DarchetypeVersion=RELEASE \
-DgroupId=model \
-DartifactId=model \
-Dversion=0.0.1-SNAPSHOT \
-Dpackage=bookmarks \
-DinteractiveMode=false
Pour créer un nouveau module dans Eclipse, allez dans le menu Fichier-> nouveau-> autre-> maven-> maven, cela apparaît immédiatement dans l'explorateur de package d'espace de travail Eclipse.
Ou de cli, cd dans le dossier parent, ici les signets et exécutez ce qui suit, il créera le projet et vous devrez ensuite importer dans Eclipse en tant que projet maven, ou peut travailler à partir du parent, ici projet de signets
mvn archetype:generate \
-DarchetypeGroupId=org.Apache.maven.archetypes \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DarchetypeVersion=RELEASE \
-DgroupId=security \
-DartifactId=security \
-Dversion=0.0.1-SNAPSHOT \
-Dpackage=bookmarks \
-DinteractiveMode=false
4 étapes simples si vous souhaitez éviter le copier/coller en XML.
Créez un projet archétype 284 (par défaut). Ouvrez le fichier pom créé changez l’emballage de jar en pom
Supprimer le dossier src du projet - Il s'agit maintenant du projet parent sans src, car le package est pom. Dans le dossier ci-dessus, créez un autre nouveau projet (284 par défaut). Remplacez l'emballage par war, ejb ou ear. Cela devient le sous-module.
Exécutez mvn Eclipse: eclipse sur chaque module. Le projet doit maintenant être prêt à être importé en tant que projet Eclipse.
Lors de l'importation du projet, Eclipse s'est plaint de ce que la configuration de projet ci-dessous n'est pas à jour avec pom.xml. Exécutez Maven-> Update Project ou utilisez Quick Fix. Pour éviter l'erreur ci-dessus, cliquez avec le bouton droit de la souris et choisissez Correction rapide. Cela mettra à jour le POMS. Une autre façon d’éviter cette erreur consiste à déclarer les sous-modules dans le pom parent.
Reportez-vous au lien ci-dessous pour plus de détails. http://maven.Apache.org/guides/introduction/introduction-to-the-pom.html#Example_1