En effet, par conception, Maven ne résout pas les dépendances transitives d'une guerre déclarée comme dépendance d'un projet. Il y a en fait un problème à ce sujet, MNG-1991 mais ce problème ne sera pas résolu dans Maven 2.x et Je ne suis pas sûr que Je ne sais pas si les superpositions permettent de contourner ce problème. Si je comprends bien, la solution proposée consiste à dupliquer les dépendances, par exemple dans un projet de type pom.
(EDIT : Après avoir creusé un peu plus, j'ai trouvé quelque chose d'intéressant dans ce fil que je cite ci-dessous :
J'ai aidé au développement du projet AppFuse le mois dernier. le mois dernier, où nous utilisons beaucoup la fonctionnalité de superposition de guerre dans le Maven war plugin. Il s'agit d'une fonctionnalité très pratique !
Pour obtenir une puissance maximale avec les superpositions de guerre, j'ai développé le plugin Warpath qui permet aux projets d'utiliser les artefacts de guerre comme des dépendances à part entière. En bref :
1) Le contenu du répertoire /WEB-INF/classes dans la dépendance de la guerre. peut être inclus dans le classpath du projet pour les tâches normales de compilation, etc.
2) Les dépendances transitives des artefacts de dépendance de la guerre deviennent disponibles pour être utilisées par d'autres plugins, par exemple compile et ear. plus besoin d'inclure toutes les dépendances lors de la création de skinny wars !
Le plugin est maintenant activement utilisé dans le projet AppFuse depuis les quelques mois, et je pense qu'il est à un point où il est à la fois utilisable et stable. stable. L'équipe chargée du plugin war serait-elle intéressée par l'inclusion du plugin warpath dans le plugin war ? Il semblerait que ce soit l'endroit le plus naturel pour l'héberger.
Donc, je n'ai pas d'expérience avec ça, mais la plugin maven warpath a l'air simple et agréable et est disponible dans le dépôt central. Pour l'utiliser, incluez l'élément de configuration suivant du plugin dans votre fichier pom.xml
fichier :
[...]
<build>
<plugins>
<plugin>
<groupId>org.appfuse</groupId>
<artifactId>maven-warpath-plugin</artifactId>
<version>1.0-SNAPSHOT</version>
<extensions>true</extensions>
<executions>
<execution>
<goals>
<goal>add-classes</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
[...]
Et ajoutez les dépendances de la guerre que vous voulez inclure dans le classpath en tant que warpath dépendances de type :
[...]
<dependencies>
<dependency>
<groupId>org.appfuse</groupId>
<artifactId>appfuse-web</artifactId>
<version>2.0</version>
<type>war</type>
</dependency>
<dependency>
<groupId>org.appfuse</groupId>
<artifactId>appfuse-web</artifactId>
<version>2.0</version>
<type>warpath</type>
</dependency>
</dependencies>
[...]
Les types de dépendance war et warpath sont tous deux nécessaires : le type war est utilisé par le plugin Maven war pour effectuer la superposition des war, le type warpath est utilisé par le plugin Warpath pour déterminer la liste correcte des artefacts à inclure dans le classpath du projet.
Je ferais un essai.)