78 votes

Comment créer un projet Maven multi-modules vide ?

En ce moment, je trouve généralement un pom.xml sur le web qui a un pom et le copier-coller pour créer mon projet parent. Ensuite, j'ai exécuté archetype:create à l'intérieur du répertoire parent pour créer des sous-modules mais archetype:create est devenu déprécié depuis lors.

Des recommandations sur la façon de créer de nouveaux projets Maven multi-modules ?

131voto

Chris H. Points 468

La manière la plus simple que j'ai trouvée pour le faire est d'utiliser la fonction pom-root pour créer le pom de premier niveau et ensuite utiliser de manière répétée archetype:generate pour créer chaque module individuellement. Cela ajoutera automatiquement les modules au pom Root (agrégateur) et définira le pom Root comme le pom parent de chaque module (edit : apparemment certains archétypes peuvent avoir un parent codé en dur, mais cela fonctionne pour le pom Root). maven-archetype-quickstart ).

Voici le détail :

  1. Créez la racine de premier niveau :

    mvn archetype:generate \
    -DarchetypeGroupId=org.codehaus.mojo.archetypes \
    -DarchetypeArtifactId=pom-root \
    -DarchetypeVersion=RELEASE
  2. cd dans votre répertoire racine nouvellement créé.

  3. 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 pouvez ajouter -DgroupId=... à chacune de ces commandes pour éviter de vous répéter.

46voto

Andrey Chaschev Points 6372

Voici un screencast sur la façon dont vous pouvez le faire avec Intellij Idea. Tout d'abord, démarrez un nouveau projet (Fichier -> Nouveau projet), choisissez "Module Maven" :

enter image description here

Tapez un nom, cliquez sur suivant, ne modifiez rien d'autre dans les étapes suivantes, cliquez sur terminer.

Maintenant, dans votre pom.xml type <packaging> et activer les mises à jour automatiques :

enter image description here

Tapez dans les modules :

enter image description here

Placez votre curseur sur m1 et appuyez sur Alt+Enter .

enter image description here

Module m1 sera automatiquement ajouté à votre projet. Vous pouvez maintenant faire Alt+Enter pour m2 et c'est tout.

enter image description here

Vous pouvez également commencer par ajouter pom.xml pour un module existant de votre projet : cliquez droit sur celui-ci dans l'arbre du projet, 'Add Framework Support...', choisissez 'Maven'. Cela créera un pom.xml .

21voto

Axel Knauf Points 1327

mvn archetype:create a été déprécié au profit de mvn archetype:generate donc seul le nom a changé. Il existe un archétype pour les projets multi-modules dans les dépôts officiels, donc l'exécution de cette commande donne 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>

En gros, vous devrez donc créer vous-même la structure des dossiers et les descripteurs de modules (fichiers pom.xml). L'utilisation d'un simple shell script ou d'un fichier batch permettra de le faire facilement, si vous en avez besoin plus d'une fois.

9voto

Vijay Kiran Points 475

Je ne suis pas sûr d'avoir bien compris votre question, mais pour créer un projet multi-modules, j'utilise normalement un pom simple (au niveau de la 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 voulez créer peut déjà avoir un archétype qui peut vous aider à créer la structure. Bien que vous puissiez obtenir l'aide d'un IDE pour écrire le pom vous-même, s'il existe un archétype disponible pour le type de projet que vous voulez construire, il est normalement plus facile de l'utiliser.

6voto

Thomas Points 440

Si vous travaillez avec l'IDE eclipse, vous devez utiliser l'option plug-in m2eclipse . C'est l'un des moyens les plus simples de créer des projets multi-modules. Vous pouvez ajouter un module à chaque projet maven en créant un 'Maven Module-Project' dans eclipse. Lors de cette opération, vous avez la possibilité de sélectionner un projet parent. Le plug-in fait tout, c'est-à-dire qu'il copie le nouveau module dans le module parent et modifie le fichier pom.xml.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X