Vous pouvez utiliser Maven profile activation basé sur la valeur des propriétés, dans ce cas, la propriété sera jdk.version
et sa valeur la configuration différente de JDK. Le profil changera alors la configuration du plugin Maven Surefire en conséquence.
Par conséquent, votre pom peut ressembler à ce qui suit:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.sample</groupId>
<artifactId>sample-project</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<jdk.version>1.7</jdk.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>${jdk.version}</source>
<target>${jdk.version}</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
<profiles>
<profile>
<id>surefire-java7</id>
<activation>
<property>
<name>jdk.version</name>
<value>1.7</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<argLine>-Xmx1024m -XX:MaxPermSize=256m</argLine>
</configuration>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>surefire-java8</id>
<activation>
<property>
<name>jdk.version</name>
<value>1.8</value>
</property>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<argLine>-Xmx1024m</argLine>
</configuration>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
Notez la section profiles
à la fin. Deux profils sont définis:
surefire-java7
: elle sera activée par la valeur 1.7
pour la variable jdk.version
et régler le argLine
pour le plugin Maven Surefire avec la valeur de consigne
surefire-java8
: elle sera activée par la valeur 1.8
pour la variable jdk.version
et définir un argLine
différent pour le plugin Maven Surefire.
Notez également que, avec cette configuration, vous pouvez même changer la version JDK (et en tant que telle configuration Surefire) à la demande de la ligne de commande, comme suit:
mvn clean test -Djdk.version=1.8
Le profil associé sera automatiquement activé partie de la construction.
Remarque importante concernant la compilation croisée (vous pouvez déjà être au courant, mais juste au cas où) je vous suggère de lire attentivement this question/answer.