Настроить Maven для использования разных JDK для разных версий J2SE?

Я хочу настроить 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

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

Ответ 1

мы решили эту проблему, явно выделив javac в config плагина компиляции (с 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>

Ответ 3

Из многочисленных upvotes в ответе @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.