34 votes

Configurer Maven pour utiliser différents JDK pour différentes versions de J2SE?

Je veux configurer Maven2 à utiliser sun-java6-jdk pour construire J2SE-1.6 modules, et d'utiliser openjdk-7 à construire J2SE-1.7 modules. Est-il possible?

Maven2 devrait alors automatiquement choisir la bonne JDK pour construire différents modules en une seule commande.

Par exemple, il devrait être

$ mvn package

au lieu de

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

P. S. C'est rien pom.xml les fichiers qui ont déjà été mis en place maven-compiler-plugin différentes <source>, <target> valeurs pour les différents modules. Si je choisis d'utiliser openjdk-7, Maven2 va générer la version 1.6 de fichiers de classe, mais à l'aide de openjdk-7, plutôt que de sun-java6-jdk. La question est de savoir sur la façon de configurer J2SE profils.

83voto

lweller Points 5252

nous avons résolu ce problème en spécifiant explicitement le code javac dans la configuration du plug-in de compilation (avec JAVA_HOME_6 et JAVA_HOME_7 définis en tant que variables d'environnement):

et pour le module 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>
 

et pour le module 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>
 

5voto

Sean Patrick Floyd Points 109428

Vous pouvez indiquer au maven-compiler-plugin de compiler des sources à l'aide d'un JDK différent

 <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>
 

1voto

yair Points 4298

Parmi les nombreux votes positifs sur la réponse de @ lweller, je suppose que c'est étrange, mais avec 1.7 tant que source et target Maven essayait toujours de compiler en utilisant java 1.5 . Plutôt que avec 7 ... Comme si:

 <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 version 2.5.1.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X