Jaka jest poprawna nazwa zmiennej środowiskowej Maven: MAVEN_HOME
, MVN_HOME
lub M2_HOME
?
Znalazłem kilka szczegółów na temat MAVEN_HOME
i M2_HOME
tutaj . Ale ja też się MVN_HOME
rozejrzałam.
Osobiście nigdy nie uważałem za przydatne ustawianie M2_HOME
.
Liczy się twoje środowisko $ PATH. Po przejęciu części odpowiedzi od firmy Danix wystarczy:
export PATH=/Users/xxx/sdk/apache-maven-3.0.5/bin:$PATH
mvn
Skrypt obliczy M2_HOME
dla Ciebie i tak za to, co warto.
M2_HOME
w przeszłości zawsze prowadziło do dziwnych błędów, głównieNoClassDefFoundError
dlatego, żemvn
polecenie zostało znalezione w PATH, ale z inną wersją Mavena znalezionąM2_HOME
. Moje życie było lepsze, odkąd przestałem ustawiać tę zmienną env i polegam tylko na dodaniu.../bin/mvn
katalogu doPATH
i pozwoleniu Mavenowi na automatyczne wykrywanie rzeczy.M2_HOME
(i tym podobne) nie mogą być używane od wersji Maven 3.5.0. Szczegółowe informacje można znaleźć w MNG-5607 i Uwagach do wydania .źródło
Oto moja konfiguracja Mavena. Możesz użyć tego jako przykładu. Nie potrzebujesz niczego więcej do korzystania z Mavena.
M2_HOME jest używany zarówno dla Maven 2, jak i 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
źródło
MAVEN_HOME jest używany do mavena 1, a M2_HOME do lokalizowania mavena 2 . Posiadanie dwóch różnych zmiennych _HOME oznacza, że można uruchomić je na tym samym komputerze. A jeśli sprawdzisz stare skrypty mvn.cmd , mają one coś takiego:
@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 ----------------------------------------------------------------------------
Zobaczyć, że
@REM M2_HOME - location of maven2's installed home dir
W każdym razie użycie tego wzorca jest obecnie przestarzałe w maven 3.5, zgodnie z dokumentacją .
Więc teraz mvn.cmd wygląda następująco:
@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 -----------------------------------------------------------------------------
Więc to, czego potrzebujesz, to JAVA_HOME, aby był poprawnie ustawiony. Zgodnie z nowym przewodnikiem instalacji (stan na 29.12.2017) , po prostu dodaj ścieżkę katalogu maven bin do zmiennej PATH. To powinno załatwić sprawę.
np .:
export PATH=/opt/apache-maven-3.5.2/bin:$PATH
źródło
Natknąłem się na to jako czekoladowe zestawy
M2_HOME
. Chciałem zlokalizowaćsettings.xml
.Obecnym sposobem
settings.xml
jest przejście do%USERPROFILE%
. Tam.m2
zawarty jest katalog , w którym można znaleźćsettings.xml
.Nigdy nie używaj
M2_HOME
. Nie jest obsługiwany od wersji Apache Maven 3.5.0.Detale:
Źródło: https://maven.apache.org/docs/3.5.0/release-notes.html#overview-about-the-changes
źródło
$M2_HOME
jest czasami używany na przykład do instalacjiTakari Extensions for Apache Maven
Jednym ze sposobów znalezienia
$M2_HOME
wartości jest wyszukaniemvn
:sudo find / -name "mvn" 2>/dev/null
I prawdopodobnie będzie to:
/opt/maven/
źródło
M2_HOME
coś czytało w Takari. Jest to po prostu użycie zmiennej zastępczej w przykładach poleceń powłoki, które można uruchomić.Rozwiązałem ten sam problem z następującymi:
export M2_HOME=/usr/share/maven
źródło
Mamy M2_HOME, MAVEN_HOME, M3_HOME - wszystkie są dostępne na rynku
Poprzednio M2_HOME jest jedyną zmienną środowiskową używaną przez wszystkich jako standard.
Ale z powodu ostatnich wydań MAVEN_Home stał się standardem, ale niektóre stare narzędzia wciąż próbują znaleźć tylko M2_HOME,
więc powinniśmy mieć zarówno M2_HOME, jak i MAVEN_HOME, aby utrzymać stare i nowe narzędzia.
M2_HOME może być również używany do obu
źródło