FAQ MavenConsultez toutes les FAQ

Nombre d'auteurs : 11, nombre de questions : 97, dernière mise à jour : 12 mai 2014  Ajouter une question

 

Cette FAQ a été réalisée à partir des questions fréquemment posées sur les forums de http://www.developpez.com et de l'expérience personnelle des auteurs.

Nous tenons à souligner que cette FAQ ne garantit en aucun cas que les informations qu'elle propose sont correctes. Les auteurs font leur maximum, mais l'erreur est humaine. Cette FAQ ne prétend pas non plus être complète. Si vous trouvez une erreur, ou que vous souhaitez nous aider en devenant rédacteur, lisez ceci.


SommaireUtilisationStructuration et modules (4)
précédent sommaire suivant
 

Voila l'exemple d'une arborescence de trois modules, avec un projet parent :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
 
parent 
|-- module1 
| |-- pom.xml 
|-- module2 
| |-- pom.xml 
|-- module3 
| |-- pom.xml 
|-- pom.xml
Le fichier pom.xml du parent déclare les modules enfants et doit avoir comme packaging pom :
Code xml : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
  
<project> 
... 
  <modules> 
    <module>module1</module> 
    <module>module2</module> 
    <module>module3</module> 
  </modules> 
... 
</project>

Ainsi, lorsqu'une action sera lancée sur le projet parent, elle le sera également sur les projets enfants.

Les enfants doivent eux-aussi déclarer le parent dans leur pom.xml :
Code xml : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
  
<project> 
  
  <parent> 
    <groupId>com.organisation</groupId> 
    <artifactId>parent</artifactId> 
    <version>1</version> 
  </parent> 
  
</project>

De cette façon, toute la configuration déclarée dans le parent sera utilisée dans le module enfant par héritage. Il est vivement conseillé de nommer les modules de la même façon que les répertoires les hébergeant, ainsi que l'artifactId.

Mis à jour le 17 juillet 2006 denisC elitost

La balise dependencyManagement, dans le POM du projet parent, permet de déclarer une version et un scope « préféré » pour une dépendance. Si un des modules enfants utilise cette dépendance, sans préciser de version ou de scope, celle déclarée dans le dependencyManagement sera utilisée.

Exemple :

Code xml : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
  
<project> 
.. 
  <dependencyManagement> 
  
    <dependencies> 
  
      <dependency> 
        <groupId>commons-lang</groupId> 
        <artifactId>commons-lang</artifactId> 
        <version>2.1</version> 
        <scope>compile</scope> 
      </dependency> 
  
    </dependencies> 
  
  </dependencyManagement> 
.. 
</project>

De cette façon, si un module enfant utilise commons-lang :
Code xml : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
  
<project> 
... 
  <dependencies> 
  
    <dependency> 
      <groupId>commons-lang</groupId> 
      <artifactId>commons-lang</artifactId> 
    </dependency> 
  
  </dependencies> 
... 
</project>

La version choisie sera la 2.1 avec le scope compile. Ce mécanisme permet de monter très facilement une version de dépendance dans tous les modules enfants.

Mis à jour le 17 juillet 2006 denisC elitost

Maven propose une structure de répertoire « type » pour tous les projets. Il est bien entendu possible d'adopter une autre structure, mais cela est bien souvent très coûteux et compliqué pour un intérêt discutable.

La structure par défaut est la suivante :

Code : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
|-- src 
| |-- main 
| | |-- java      > Contient le code source Java 
| | |-- resources > Contient les ressources à inclure dans le .jar produit (configuration...) 
| | |-- filters   > Filtres permettant de modifier les ressources lors de l'assemblage du .jar 
| | |-- assembly  > Descripteur pour les assemblées Maven 
| | |-- config    > Fichier de configurations extérieures au .jar 
| | |-- webapp    > Le contenu de l'application Web (projet Web) 
| |-- test 
| | |-- java      > Contient le code source Java des tests 
| | |-- resources > Contient les ressources pour les tests 
| | |-- filters   > Filtres à appliquer aux ressources de test 
| |-- site        > Le site de documentation 
|-- target        > Répertoire où Maven génère ses fichiers/artefacts 
|-- pom.xml       > Descripteur du projet

Mis à jour le 17 juillet 2006 denisC elitost

Il se peut que vous ayez besoin d'utiliser votre propre structure de répertoires, cela se fait en modifiant le fichier pom.xml :

Code xml : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
  
<project> 
  <build> 
    ... 
    <sourceDirectory>${basedir}/messources</sourceDirectory> 
    <scriptSourceDirectory>${basedir}/messcripts</scriptSourceDirectory> 
    <testSourceDirectory>${basedir}/mestest</testSourceDirectory> 
    <outputDirectory>${basedir}/mesclasses</outputDirectory> 
    <testOutputDirectory>${basedir}/mesclassestests</testOutputDirectory> 
    ... 
  </build> 
</project>

Mis à jour le 31 août 2007 elitost

Proposer une nouvelle réponse sur la FAQ

Ce n'est pas l'endroit pour poser des questions, allez plutôt sur le forum de la rubrique pour ça


Réponse à la question

Liens sous la question
précédent sommaire suivant
 

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2017 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

 
Responsables bénévoles de la rubrique Java : Mickael Baron - Robin56 -