Установка JAVA_HOME для Maven ТОЛЬКО независимо от моего кода Java

Я бегу разные проекты Java. Понимание того, что изменение системного окружения java_home при каждом переключении между ними - плохая идея, я начинаю устанавливать JAVA_HOME специально для каждого из них независимо. Когда я устанавливаю JAVA_HOME для среды выполнения maven (версия 2) (java maven использует для запуска, будучи приложением java)? Насколько я понимаю, JAVA_HOME для maven не должен влиять на то, как мой код компилируется и запускается (которые должны быть настроены с использованием исходного и целевого модуля maven-compiler-plugin). Правильно?

Когда я устанавливаю JAVA_HOME в mvn.bat:

@REM Maven2 Start Up Batch script
set JAVA_HOME=C:\dev\tools\jdk-1.6

И мой maven-compiler-plugin настроен так:

<plugin>
  <artifactId>maven-compiler-plugin</artifactId>
  <configuration>
    <source>1.7</source>
    <target>1.7</target>
  </configuration>
</plugin>

Я получаю эту ошибку:

[ERROR] BUILD ERROR
[INFO] --------------------------------------
[INFO] Fatal error compiling
Embedded error: invalid target release: 1.7

Почему JAVA_HOME, указанный для среды выполнения maven, влияет на мою компиляцию кода? Как разделить между двумя?

1 ответ

Maven будет использовать JRE, указанный в JAVA_HOMEПо умолчанию он будет использовать JDK из той же папки для компиляции .java файлы

Однако вы можете изменить его в maven-compile-plugin конфигурация

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
          <verbose>true</verbose>
          <fork>true</fork>
          <executable><!-- path-to-javac --></executable>
          <compilerVersion>1.3</compilerVersion>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>
Другие вопросы по тегам