In this thread, Nicolas De Loof writes:
I solved the issue of compiling the application code for Java 1.3 AND
using java5 for tests :
Application code is compiled based on java 1.3 using compiler
bootclasspath argument.
Tests are compiled by adding a compiler execution prior to test-phase
(as I didn't find a way to configure testCompile to use a != configuration).
Here is my POM :
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.3</source>
<target>1.3</target>
<compilerArguments>
<bootclasspath>${settings.localRepository}/com/sun/rt/1.3.1_08/rt-1.3.1_08.jar</bootclasspath>
</compilerArguments>
</configuration>
<executions>
<execution>
<id>compile-tests</id>
<phase>process-test-sources</phase>
<goals>
<goal>testCompile</goal>
</goals>
<configuration>
<source>1.5</source>
<target>1.5</target>
<compilerArguments>
<bootclasspath>
${java.home}/lib/rt.jar
</bootclasspath>
</compilerArguments>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.sun</groupId>
<artifactId>rt</artifactId>
<version>1.3.1_08</version>
</dependency>
</dependencies>
</plugin>
Please note this is only a maven2 hack. Tests are compiled prior to the "test-compile" phase to allow compiler configuration substitution. A better solution should be to have support for separate configuration of the compiler plugin for compile and test-compile phases.
| Handy Hint If you have to set more than one jar in your bootClasspath you need to separate them according to your platform (';' on Windows and ':' on Unix). The simplest way to support multi-plateform environment is to use ${path.separator} so you would have for example : <bootclasspath>${settings.localRepository}/com/sun/rt/1.4.2_13/rt-1.4.2_13.jar${path.separator}${java.home}/lib/jsse.jar${path.separator}${java.home}/lib/jce.jar</bootclasspath>
|
