Publié le 09/19/2018, rédigé par
Gaulthier LALLEMAND
Maven
Comment modifier les répertoires de sources et de tests dans un pom MAVEN ?
Organisation de l'arborescence de fichiers
Classiquement, l'arborescence de fichiers d'un module est la suivante (par exemple en java) :
. <= Racine du projet
|__ src/
| |__ main/
| | |__ java/ <= Placer les sources écrites en java ici
| |
| |__ test/
| |__ java/ <= Placer les sources des tests écrits en java ici
|
|__ pom.xml <= Fichier de build de Maven
Mais il peut arriver qu'un module (pour différentes raisons) ne se présente pas ainsi. On peut avoir quelquechose comme ça :
. <= Racine du projet
|__ app/ <= Les sources sont ici ainsi que dans les sous-répertoires
| |__ dir1/
| |__ dir2/
|
|__ test/ <= Les sources des tests sont ici ainsi que dans les sous-répertoires
| |__ dir3/
| |__ dir4/
|
|__ pom.xml <= Fichier de build de Maven
Configuration du pom de Maven
Afin de dire à MAVEN qu'il faut aller chercher les sources et les tests dans des répertoires non-standards, j'utilise le plugin build-helper-maven-plugin ainsi :
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.company</groupId>
<artifactId>project</artifactId>
<version>1.0.0</version>
<packaging>jar</packaging>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<!-- J'ajoute les sources -->
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<!-- Les répertoires de sources se placent ici -->
<source>app</source>
</sources>
</configuration>
</execution>
<!-- J'ajoute les tests -->
<execution>
<id>add-test-source</id>
<phase>generate-test-sources</phase>
<goals>
<goal>add-test-source</goal>
</goals>
<configuration>
<sources>
<!-- Les répertoires contenant les tests se placent ici -->
<source>test</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>