Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 5 Next »

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

Icon

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>

In this thread:

http://mail-archives.apache.org/mod_mbox/maven-users/200702.mbox/%3C8770432.post@talk.nabble.com%3E

James Wiltshire found a way to obtain the desired result without needing to specify the bootclasspath.

An example that has source and target at 1.4 and 1.5 for production and test source, respectively:

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <executions>
                    <execution>
                        <id>java-1.4-compile</id>
                        <phase>compile</phase>
                        <goals>
                            <goal>compile</goal>
                        </goals>
                        <configuration>
                            <source>1.4</source>
                            <target>1.4</target>
                        </configuration>
                    </execution>
                    <execution>
                        <id>java-1.5-compile</id>
                        <phase>process-test-sources</phase>
                        <goals>
                            <goal>testCompile</goal>
                        </goals>
                        <configuration>
                            <source>1.5</source>
                            <target>1.5</target>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

The above example is known to work with Maven 2.0.9.

  • No labels