MAVEN_HOME, MVN_HOME або M2_HOME


84

Що таке правильний Maven ім'я змінної середовища: MAVEN_HOME, MVN_HOMEабо M2_HOME?

Я знайшов деякі подробиці про MAVEN_HOMEі M2_HOME тут . Але я також бачив MVN_HOMEнавколо.

Відповіді:


62

Я особисто ніколи не вважав це корисним встановлювати M2_HOME.

Важливим є ваше середовище $ PATH. Захопивши частину відповіді від Danix, вам потрібно лише:

export PATH=/Users/xxx/sdk/apache-maven-3.0.5/bin:$PATH

mvnСкрипт обчислює M2_HOMEдля вас в будь-якому випадку для чого це коштує.


3
+1. Я б навіть сказав, що налаштування M2_HOMEв минулому завжди призводило до дивних помилок, здебільшого NoClassDefFoundErrorтому, що mvnкоманда знаходилась у PATH, але з іншою версією Maven, яку можна було знайти M2_HOME. Моє життя стало кращим з тих пір, як я перестав налаштовувати env var і покладаюсь лише на додавання .../bin/mvnкаталогу до PATHі дозволяю Maven самостійно визначати речі.
Батист Матхус

6
"Я особисто ніколи не вважав корисним встановлення M2_HOME." І ви мали рацію. Це засуджується: stackoverflow.com/a/47712646/270371
davidxxx


22

Ось моя настройка 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

8

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


1

Я натрапив на це, як на шоколадні набори 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


-1

$M2_HOMEвикористовується іноді, наприклад, для встановлення Takari Extensions for Apache Maven

Одним із способів знайти $M2_HOMEцінність є пошук mvn:

sudo find / -name "mvn" 2>/dev/null

І, можливо, це буде: /opt/maven/


Я не бачу нічого на пов'язаній сторінці, що свідчить про те, що M2_HOMEчитає щось у Takari. Він просто використовує змінну-заповнювач у прикладах команд оболонки, які ви можете запустити.
Джессі Глік,

-2

Я вирішив таку ж проблему з наступним:

export M2_HOME=/usr/share/maven

2
Хоча цей код може вирішити питання, включаючи пояснення того, як і чому це вирішує проблему, справді допомогло б поліпшити якість вашої публікації, і, можливо, призведе до збільшення кількості голосів. Пам’ятайте, що ви відповідаєте на запитання читачам у майбутньому, а не лише тому, хто задає зараз. Будь ласка, відредагуйте свою відповідь, щоб додати пояснення та вказати, які обмеження та припущення застосовуються.
подвійний звуковий сигнал

-7

У нас є M2_HOME, MAVEN_HOME, M3_HOME, всі вони доступні на ринку.
Раніше M2_HOME - це єдина змінна середовища, яка використовується усіма як стандарт.
Але, завдяки останнім випускам, MAVEN_Home вийшов стандартним, але деякі старі інструменти все ще намагаються знайти лише M2_HOME,
тому ми повинні мати як M2_HOME, так і MAVEN_HOME для підтримки старих та нових інструментів.
M2_HOME може використовуватися як для обох

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.