Нет, это не так. Он указывает на JRE, используемую вашим JDK, что и должно быть. Если вы распечатаете JAVA_HOME
вне maven, он должен напечатать правильно:
C:\>echo %JAVA_HOME%
C:\Program Files\Java\jdk1.7.0_07
C:\>mvn -version
Apache Maven 3.0.4 (r1232337; 2012-01-17 10:44:56+0200)
Maven home: C:\APPS\apache-maven-3.0.4\bin\..
Java version: 1.7.0_07, vendor: Oracle Corporation
Java home: C:\Program Files\Java\jdk1.7.0_07\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows 7", version: "6.1", arch: "amd64", family: "windows"
C:\>
Итак, в основном JAVA_HOME должен указывать на установку JDK (maven нужен tools.jar), но maven фактически использует jre в JDK для запуска себя.
При использовании mvn -version
maven использует внутреннее свойство java.home, как видно из исходный код:
version.append( "Java home: " + System.getProperty( "java.home", "<unknown java home>" ) ).append( LS );
Это свойство не то же самое, что параметр среды JAVA_HOME, поэтому оно может вас обмануть. На самом деле это динамическое свойство, показывающее, на какой JRE работает ваш код. Если вы скомпилируете и выполните тестовый класс Test.java, печатающий то же самое, вы увидите, что если ваш JAVA_HOME указывает на JDK, значение java.home не равно вашему JAVA_HOME. Это ожидаемо.
Цитата это:
В чем разница между JAVA_HOME и java.home?
JAVA_HOME - это каталог установки JDK, например, C: \ jdk5. Он предназначен для установки в качестве переменной среды и ссылки на нее в пакетных файлах Windows или сценариях Unix. У меня он всегда есть в Панели управления Windows и в файлах .tcsh вместе с другими общими переменными среды. В некоторых приложениях Java для этой цели используется имя jdk.home, которое, на мой взгляд, лучше. Но JAVA_HOME использовался с самого начала и теперь является соглашением.
java.home - это каталог установки JRE, например, C: \ jdk5 \ jre или C: \ Program Files \ Java \ jre1.5.0_06. В отличие от JAVA_HOME, я никогда не видел java.home в качестве переменной среды. java.home - это встроенное системное свойство Java, значением которого является установочный каталог JRE. Поскольку все системные свойства Java также представлены как свойства сборки Ant, вы также можете использовать $ {java.home} в файлах сборки.
Было бы лучше имя jre.home? Может быть, но я не думаю, что Sun это изменит.
Вы можете видеть, что maven использует JAVA_HOME на mvn.bat:
:endInit
SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe"
..
%MAVEN_JAVA_EXE% %MAVEN_OPTS% -classpath %CLASSWORLDS_JAR% ..
И если вы хотите убедиться, вы можете закомментировать оператор «@echo off» в mvn.bat, чтобы вы могли видеть, что он используется.
TL; DR: исходя из предоставленной вами информации, ваша конфигурация верна, ничего менять не нужно.
Изменить: благодаря этой теме также возникла проблема, связанная с тем, что это сбивает с толку, что привело к изменению вывода для Maven версии 3.5.4.
person
eis
schedule
07.03.2013