Що таке правильний Maven ім'я змінної середовища: MAVEN_HOME
, MVN_HOME
або M2_HOME
?
Я знайшов деякі подробиці про MAVEN_HOME
і M2_HOME
тут . Але я також бачив MVN_HOME
навколо.
Що таке правильний Maven ім'я змінної середовища: MAVEN_HOME
, MVN_HOME
або M2_HOME
?
Я знайшов деякі подробиці про MAVEN_HOME
і M2_HOME
тут . Але я також бачив MVN_HOME
навколо.
Відповіді:
Я особисто ніколи не вважав це корисним встановлювати M2_HOME
.
Важливим є ваше середовище $ PATH. Захопивши частину відповіді від Danix, вам потрібно лише:
export PATH=/Users/xxx/sdk/apache-maven-3.0.5/bin:$PATH
mvn
Скрипт обчислює M2_HOME
для вас в будь-якому випадку для чого це коштує.
Ось моя настройка 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 згідно з документацією .
На основі проблем із використанням M2_HOME, пов’язаних з різними встановленими версіями Maven, та для спрощення використання, M2_HOME було вилучено і більше не підтримується MNG-5823 , MNG-5836 , MNG-5607
Отже, тепер 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.
Подробиці:
На основі проблем із використанням,
M2_HOME
пов’язаних з різними встановленими версіями Maven, та для спрощення використання, використанняM2_HOME
було вилучено і більше не підтримується MNG-5823 , MNG-5836 , MNG-5607 .Важлива зміна для користувачів Windows: використання програми
%HOME%
було замінено на%USERPROFILE%
MNG-6001
Джерело: 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
читає щось у Takari. Він просто використовує змінну-заповнювач у прикладах команд оболонки, які ви можете запустити.
Я вирішив таку ж проблему з наступним:
export M2_HOME=/usr/share/maven
У нас є M2_HOME, MAVEN_HOME, M3_HOME, всі вони доступні на ринку.
Раніше M2_HOME - це єдина змінна середовища, яка використовується усіма як стандарт.
Але, завдяки останнім випускам, MAVEN_Home вийшов стандартним, але деякі старі інструменти все ще намагаються знайти лише M2_HOME,
тому ми повинні мати як M2_HOME, так і MAVEN_HOME для підтримки старих та нових інструментів.
M2_HOME може використовуватися як для обох
M2_HOME
в минулому завжди призводило до дивних помилок, здебільшогоNoClassDefFoundError
тому, щоmvn
команда знаходилась у PATH, але з іншою версією Maven, яку можна було знайтиM2_HOME
. Моє життя стало кращим з тих пір, як я перестав налаштовувати env var і покладаюсь лише на додавання.../bin/mvn
каталогу доPATH
і дозволяю Maven самостійно визначати речі.