Установка 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>