Est le type d'emballage « pom » nécessaire lorsqu'ils ne sont pas en utilisant l'agrégation du projet (multimodules)?

StackOverflow https://stackoverflow.com/questions/2193789

Question

Je veux hériter des dépendances d'un pom.xml (parent) dans un projet d'enfant dans Maven 2.2.1; à-dire utiliser l'héritage de projet. Il semble qu'il est nécessaire de changer le type d'emballage par défaut de jar à pom dans ce cas.

Cependant, ne la documentation Maven2 état que le type d'emballage pom est nécessaire pour l'agrégation du projet, à savoir multimodule projets qui utilisent des sous-modules, mais pas pour l'héritage du projet?

<project>
 <modelVersion>4.0.0</modelVersion>
 <groupId>example</groupId>
 <artifactId>example-parent</artifactId>
 <version>1</version>

 <dependencies>
   <dependency>
     <groupId>log4j</groupId>
     <artifactId>log4j</artifactId>
     <version>1.2.14</version>
   </dependency>
 </dependencies>
</project>

<project>     
 <parent>
   <groupId>example</groupId>
   <artifactId>example-parent</artifactId>
   <version>1</version>
 </parent>

 <modelVersion>4.0.0</modelVersion>
 <groupId>example</groupId> 
 <artifactId>example-child</artifactId>
</project>

Mais si vous appelez Maven (par exemple mvn clean) avec la configuration ci-dessus, vous obtenez une erreur:

Project ID: example:example-child

Reason: Parent: example:example-parent:jar:1 
 of project: example:example-child has wrong packaging: jar.
Must be 'pom'. for project example:example-child

D'autre D'autre part, avec l'entrée suivante:

<project> 
 ... 
 <packaging>pom</packaging>
 ... 
</project>

dans la pom.xml mère, Maven peut être exécutée sans erreur.

est-ce comportement de Maven correct?

Était-ce utile?

La solution

Comme indiqué dans le section Héritage du POM Référence :

  

Le type d'emballage qui doit être pom pour parent et l'agrégation projets (multi-module).

Le comportement de Maven me semble correct (et le message d'erreur est bien auto expliquer).

Autres conseils

Si vous êtes juste vouloir hériter des dépendances alors je ne pense pas qu'il doit être de type « pom ». Vous pourriez avoir pot et préciser simplement comme une dépendance du projet que vous avez comme enfant. Cependant, vous ne seriez pas alors la relation parent / enfant qui est ce qui empêche votre projet parent étant un type autre que « pom ».

Pour être clair, vous héritez les dépendances de toutes vos dépendances (dépendances transitif).

Comme l'a souligné Pascal, le comportement est correct.

Si vous cherchez toujours des moyens de partager les dépendances entre les modules, vous pouvez envisager emmitoufler les dépendances en question dans un pom, puis avoir vos modules dépendent tous deux que les nouvelles pom « dépendances ».

Voir Maven Section 3.6.1 pour plus de détails.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top