On 09/03/2010, Niall Pemberton <niall.pember...@gmail.com> wrote: > First thought this is will overly complicate the maven build.
Depends - if it can be done as a separate profile in the parent pom, then it should be not too bad. Seems to me that this will be a recurring problem - at some point we'll probably have to move to a version of Maven that requires 1.5+ (already the current release requires this, though 1.4 still seems to be supported). At which point, do we create Ant builds for all the 1.4 projects? That could be a lot of work, whereas any work done on the parent pom will be usable by all components. Once set up for a single JVM, it is trivial to add others. > Also I just restored compatibility for JDK 1.4[1] so its only JDK 1.3. Yes, thanks, I saw that. > We have Ant builds for JDK 1.3 components - can Continuum run Ant? I think so. If not, Hudson can. > Niall: > > [1] http://markmail.org/message/7xlgzzefqsfz4no2 > > > On Tue, Mar 9, 2010 at 1:10 AM, sebb <seb...@gmail.com> wrote: > > I've done some investigations. > > > > Maven can happily compile code with Java 1.3 or 1.4 etc. even when > > Maven itself runs under Java 1.5+ [1] > > > > This can be done by adding the following to the component POM: > > > > <build> > > <plugins> > > <plugin> > > <groupId>org.apache.maven.plugins</groupId> > > <artifactId>maven-compiler-plugin</artifactId> > > <configuration> > > <fork>true</fork> > > <executable>${JAVA_1_3_HOME}/bin/javac</executable> > > <compilerVersion>${maven.compile.source}</compilerVersion> > > </configuration> > > > > The variable JAVA_1_3_HOME can either be defined as: > > + an environment variable > > + added to settings.xml or > > + defined on the command line > > (the above are processed in order, the last one takes precedence) > > > > SureFire also allows a different JVM to be used: > > > > <artifactId>maven-surefire-plugin</artifactId> > > <configuration> > > <jvm>${JAVA_1_4_HOME}/bin/java</jvm> > > > > However, the current version of Surefire (2.4.3) does not run under > > 1.3.1; the latest version that seems to support 1.3 is Surefire 2.2, > > so the parent version needs to be overridden with that in the > > component pom. > > > > So projects requiring Java 1.3 or 1.4 can be compiled and tested under > Java 1.5+ > > > > But how best to implement this? > > > > It's important that the POMS still work even if local system only has > > (say) Java 1.5, but it would be nice if Maven automatically chose the > > appropriate compiler if it is available (according to the environment > > variables). > > > > It would be neat if this could be implemented in the parent pom, but I > > don't know enough about profiles to know if this is possible. Can the > > parent pom refer to variables defined in a child pom? > > > > What would be ideal is to activate the settings when the component > > profile specifies compiler.source which is different from the JVM > > which is running Maven. If the appropriate environment variable > > exists (i.e. the compiler exists) then process the settings, otherwise > > report a warning and continue. > > > > Otherwise, if the overrides can at least be enabled by setting a > > command-line parameter, that would be OK. > > > > 1] > http://maven.apache.org/plugins/maven-compiler-plugin/examples/compile-using-different-jdk.html > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > > For additional commands, e-mail: dev-h...@commons.apache.org > > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org > For additional commands, e-mail: dev-h...@commons.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org