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>