Настроить Maven для использования разных JDK для разных версий J2SE? - PullRequest
34 голосов
/ 18 января 2011

Я хочу настроить Maven2 на использование sun-java6-jdk для сборки модулей Java SE 1.6 и использование openjdk-7 для сборки модулей Java SE 1.7.Возможно ли это?

Затем Maven2 должен автоматически выбрать правильный JDK для построения различных модулей в одной команде.

Например, это должно быть

$ mvn package

вместо

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

PS Это не касается файлов pom.xml, которые уже настроили maven-compiler-plugin с различными значениями <source>, <target> для разных модулей.Если я решу использовать openjdk-7, Maven2 создаст файлы классов версии 1.6, но с использованием openjdk-7, а не sun-java6-jdk.Вопрос в том, как настроить профили Java SE.

Ответы [ 3 ]

84 голосов
/ 18 января 2011

мы решили эту проблему, явно указав javac в конфигурации плагина компиляции (с JAVA_HOME_6 и JAVA_HOME_7, определенными как переменные среды):

и для модуля 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>

и дляМодуль 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>
5 голосов
/ 18 января 2011

Вы можете указать maven-compiler-plugin Компилировать источники, используя другой JDK

<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>
1 голос
/ 21 марта 2013

Из многочисленных откликов на ответ @ lweller я думаю, что это странно, но с 1.7 как source и target maven все еще пытался скомпилировать, используя java 1.5.Скорее только с 7 ... Примерно так:

<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 версии 2.5.1.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...