programming pom plugin homepage compiler maven-2

maven-2 - pom - maven-compiler-plugin



¿Configurar Maven para usar diferentes JDK para diferentes versiones de J2SE? (3)

Quiero configurar Maven2 para que use sun-java6-jdk para compilar módulos Java SE 1.6 y use openjdk-7 para compilar módulos Java SE 1.7. ¿Es posible?

Maven2 debería elegir automáticamente el JDK correcto para construir diferentes módulos en un comando.

Por ejemplo, debería ser

$ mvn package

en lugar de

$ cd module1 $ update-alternatives ... jdk6 ... $ mvn package ... $ cd module2 $ update-alternatives ... jdk7 ... $ mvn package

PD: No se trata de archivos pom.xml, que ya han sido configurados maven-compiler-plugin con diferentes valores de <source> , <target> para diferentes módulos. Si elijo usar openjdk-7, Maven2 generará archivos de clase de la versión 1.6, pero usando openjdk-7 en lugar de sun-java6-jdk. La pregunta es sobre cómo configurar perfiles de Java SE.


De los numerosos votos ascendentes sobre la respuesta de @lweller, creo que es extraño, pero con 1.7 como target maven de source y de target aún intentado compilar usando java 1.5 . Más bien solo con 7 ... Como tal:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>7</source> <!-- see here, says only 7, not 1.7 --> <target>7</target> <!-- here as well --> <showDeprecation>true</showDeprecation> <showWarnings>true</showWarnings> <executable>${env.JAVA_HOME_7}/bin/javac</executable> <fork>true</fork> </configuration> </plugin>

maven-compiler-plugin versión 2.5.1.


Puede decirle al compilador maven-compiler que compile las fuentes que usan un JDK diferente

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <executable><!-- path-to-javac --></executable> </configuration> </plugin>


resolvimos este problema especificando explícitamente el javac en la configuración del plugin de compilación (con JAVA_HOME_6 y JAVA_HOME_7 definidos como variables de entorno):

y para el módulo Java 6

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> <showDeprecation>true</showDeprecation> <showWarnings>true</showWarnings> <executable>${env.JAVA_HOME_6}/bin/javac</executable> <fork>true</fork> </configuration> </plugin>

y para el módulo Java 7

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> <showDeprecation>true</showDeprecation> <showWarnings>true</showWarnings> <executable>${env.JAVA_HOME_7}/bin/javac</executable> <fork>true</fork> </configuration> </plugin>