mars
2012
Voici la problèmatique: Vous avez créé un projet maven subdivisé en plusieurs modules suivant une certaine hiérarchie. Chaque module a ses propres classes de test, mais vous avez développé quelques classes utilitaires requises pour la plupart des tests et que vous souhaiteriez placer à un seul endroit de façon à pouvoir les utiliser depuis les classes de tests de chaque module.
En général la plupart des projets multi-modules ont un module commun dont tous les autres héritent et qui sert justement à ce type d’usage. Mais simplement placer lesdites classes dans son arborescence src/test/java ne fonctionne pas car lors de la génération de l’artefact, maven n’exporte pas les classes de test. Une solution à peu de frais consisterait alors à intégrer ces classes utilitaires de test dans l’arborescence main… sauf qu’elles n’ont rien à y faire si elles ne servent qu’aux tests.
La solution est la suivante: Dans le module commun, nous allons indiquer à maven d’exporter les classes de test dans un jar séparé, et dans les modules qui ont besoin de l’utiliser, nous allons ajouter une dépendance vers ce module.
A ajouter dans les plugins de build du module commun:
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<id>jar-test-classes</id>
<phase>package</phase>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
A ajouter dans les dépendance de chaque module ayant besoin de ces classes utilitaires de test:
<groupId>com.entreprise.projet</groupId>
<artifactId>module-common</artifactId>
<version>${project.version}</version>
<classifier>tests</classifier>
<scope>test</scope>
<type>jar</type>
</dependency>
[…] Regrouper les classes de test communes dans un projet maven multi-modules par Aldian (02/03/2012 17:54) Voici la problèmatique: Vous avez créé un projet maven subdivisé en plusieurs modules suivant une certaine hiérarchie. Chaque module a ses propres classes de test, mais vous avez développé quelques classes utilitaires requises pour la plupart des tests et que vous souhaiteriez placer à un seul endroit de façon à pouvoir les utiliser depuis les classes de tests de chaque module. En général la plupart des projets multi-modules ont un module commun dont tous les […] […]