Что такое правильный Maven имя переменной среды: MAVEN_HOME
, MVN_HOME
или M2_HOME
?
Я нашел некоторые подробности MAVEN_HOME
и M2_HOME
здесь . Но я тоже видел MVN_HOME
вокруг.
Я лично никогда не считал полезным устанавливать M2_HOME
.
Важна ваша среда $ PATH. Взяв часть ответа от Даникса, все, что вам нужно, это:
export PATH=/Users/xxx/sdk/apache-maven-3.0.5/bin:$PATH
mvn
Скрипт вычисляет M2_HOME
для вас в любом случае для чего это стоит.
M2_HOME
в прошлом всегда приводила к странным ошибкам, в основномNoClassDefFoundError
потому, чтоmvn
команда была найдена в PATH, но с другой версией Maven, найденной черезM2_HOME
. Моя жизнь стала лучше с тех пор, как я перестал устанавливать эту переменную env и полагаюсь только на добавление.../bin/mvn
каталогаPATH
и позволяю Maven автоматически определять вещи.M2_HOME
(и т.п.) не должны использоваться с Maven 3.5.0. Подробнее см. MNG-5607 и Примечания к выпуску .источник
Вот моя настройка Maven. Вы можете использовать это как пример. Для использования Maven вам больше ничего не нужно.
M2_HOME используется как для Maven 2, так и для 3
export M2_HOME=/Users/xxx/sdk/apache-maven-3.0.5 export M2=$M2_HOME/bin export MAVEN_OPTS="-Xmx1048m -Xms256m -XX:MaxPermSize=312M" export PATH=$M2:$PATH
источник
MAVEN_HOME используется для maven 1, а M2_HOME используется для поиска maven 2 . Наличие двух разных переменных _HOME означает, что их можно запускать на одном компьютере. И если вы проверите старые скрипты mvn.cmd, у них есть что-то вроде:
@REM ---------------------------------------------------------------------------- @REM Maven2 Start Up Batch script @REM @REM Required ENV vars: @REM JAVA_HOME - location of a JDK home dir @REM @REM Optional ENV vars @REM M2_HOME - location of maven2's installed home dir @REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands @REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a key stroke before ending @REM MAVEN_OPTS - parameters passed to the Java VM when running Maven @REM e.g. to debug Maven itself, use @REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 @REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files @REM ----------------------------------------------------------------------------
Видеть, что
@REM M2_HOME - location of maven2's installed home dir
В любом случае использование этого шаблона теперь устарело в maven 3.5 согласно документации .
Итак, теперь mvn.cmd выглядит так:
@REM ----------------------------------------------------------------------------- @REM Apache Maven Startup Script @REM @REM Environment Variable Prerequisites @REM @REM JAVA_HOME Must point at your Java Development Kit installation. @REM MAVEN_BATCH_ECHO (Optional) Set to 'on' to enable the echoing of the batch commands. @REM MAVEN_BATCH_PAUSE (Optional) set to 'on' to wait for a key stroke before ending. @REM MAVEN_OPTS (Optional) Java runtime options used when Maven is executed. @REM MAVEN_SKIP_RC (Optional) Flag to disable loading of mavenrc files. @REM -----------------------------------------------------------------------------
Итак, вам нужно правильно установить JAVA_HOME. Согласно новому руководству по установке (от 29.12.2017) , просто добавьте путь к каталогу maven bin в переменную PATH. Это должно сработать.
пример:
export PATH=/opt/apache-maven-3.5.2/bin:$PATH
источник
Я наткнулся на это, как на шоколадные наборы
M2_HOME
. Я хотел найтиsettings.xml
.Текущий способ
settings.xml
- это пойти в%USERPROFILE%
. Там содержится каталог.m2
, где можно найтиsettings.xml
.Никогда не используйте
M2_HOME
. Он не поддерживается с Apache Maven 3.5.0.Детали:
Источник: https://maven.apache.org/docs/3.5.0/release-notes.html#overview-about-the-changes
источник
$M2_HOME
иногда используется, например, для установкиTakari Extensions for Apache Maven
Один из способов найти
$M2_HOME
ценность - это поискатьmvn
:sudo find / -name "mvn" 2>/dev/null
И, возможно, это будет:
/opt/maven/
источник
M2_HOME
читается в Такари. Он просто использует переменную-заполнитель в примерах команд оболочки, которые вы можете запустить.Я решил ту же проблему со следующим:
export M2_HOME=/usr/share/maven
источник
У нас есть M2_HOME, MAVEN_HOME, M3_HOME, все они доступны на рынке.
Ранее M2_HOME - единственная переменная среды, используемая всеми как стандарт.
Но в связи с последними выпусками MAVEN_Home стал стандартным, но некоторые старые инструменты все еще пытаются найти только M2_HOME,
поэтому у нас должны быть как M2_HOME, так и MAVEN_HOME, чтобы поддерживать старые и новые инструменты.
M2_HOME также может использоваться для обоих
источник