MAVEN_HOME, MVN_HOME oder M2_HOME

84

Was ist die richtige Variable Maven Umgebung Name: MAVEN_HOME, MVN_HOMEoder M2_HOME?

Ich habe einige Details über MAVEN_HOMEund M2_HOME hier gefunden . Aber ich habe auch gesehen MVN_HOME.

Cassiomolin
quelle

Antworten:

62

Ich persönlich fand es nie nützlich zu setzen M2_HOME.

Was zählt, ist Ihre $ PATH-Umgebung. Wenn Sie einen Teil der Antwort von Danix entführen, brauchen Sie nur:

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

Das mvnSkript berechnet M2_HOMEfür Sie trotzdem, was es wert ist.

Steve C.
quelle
3
+1. Ich würde sogar sagen, dass das Setzen M2_HOMEin der Vergangenheit immer zu seltsamen Fehlern geführt hat, hauptsächlich NoClassDefFoundErrorweil der mvnBefehl im PATH gefunden wurde, aber mit einer anderen Maven-Version, die durch gefunden wurde M2_HOME. Mein Leben war besser, seit ich aufgehört habe, diese env var einzustellen, und mich nur darauf verlasse, .../bin/mvndas Verzeichnis hinzuzufügen PATHund Maven Dinge automatisch erkennen zu lassen.
Baptiste Mathus
6
"Ich persönlich fand es nie nützlich, M2_HOME einzustellen." Und du hattest recht. Das ist veraltet: stackoverflow.com/a/47712646/270371
davidxxx
37

M2_HOME(und dergleichen) darf ab Maven 3.5.0 nicht mehr verwendet werden. Weitere Informationen finden Sie in MNG-5607 und Versionshinweisen .

ᄂ ᄀ
quelle
22

Hier ist mein Maven-Setup. Sie können es als Beispiel verwenden. Sie brauchen nichts anderes, um Maven zu benutzen.

M2_HOME wird sowohl für Maven 2 als auch für Maven 3 verwendet

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
Danix
quelle
8

MAVEN_HOME wird für Maven 1 und M2_HOME für Maven 2 verwendet . Mit den zwei verschiedenen _HOME-Variablen können beide auf demselben Computer ausgeführt werden. Und wenn Sie alte mvn.cmd- Skripte überprüfen , haben sie so etwas wie:

@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 ----------------------------------------------------------------------------

Siehst du das @REM M2_HOME - location of maven2's installed home dir

Wie auch immer, die Verwendung dieses Musters ist jetzt mit maven 3.5 gemäß der Dokumentation veraltet .

Aufgrund von Problemen bei der Verwendung von M2_HOME im Zusammenhang mit verschiedenen installierten Maven-Versionen und zur Vereinfachung wurde die Verwendung von M2_HOME entfernt und wird nicht mehr unterstützt. MNG-5823 , MNG-5836 , MNG-5607

So, jetzt sieht die mvn.cmd aus wie:

@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 -----------------------------------------------------------------------------

Was Sie also brauchen, ist JAVA_HOME, um richtig eingestellt zu sein. Fügen Sie gemäß der neuen Installationsanleitung (Stand 29.12.2017) einfach den Verzeichnispfad maven bin zur Variablen PATH hinzu. Es sollte den Trick machen.

Ex : export PATH=/opt/apache-maven-3.5.2/bin:$PATH

Prime
quelle
1

Ich stolperte darüber als schokoladige Sets M2_HOME. Ich wollte finden settings.xml.

Der aktuelle Weg für settings.xmlist zu gehen %USERPROFILE%. Dort ist ein Verzeichnis .m2enthalten, in dem man findet settings.xml.

Niemals benutzen M2_HOME. Es wird seit Apache Maven 3.5.0 nicht mehr unterstützt.

Einzelheiten:

Aufgrund von Problemen bei der Verwendung in M2_HOMEBezug auf verschiedene installierte Maven-Versionen und zur Vereinfachung wurde die Verwendung von M2_HOMEentfernt und wird nicht mehr unterstützt. MNG-5823 , MNG-5836 , MNG-5607 .

Wichtige Änderung für Windows-Benutzer: Die Verwendung von %HOME%wurde durch %USERPROFILE% MNG-6001 ersetzt

Quelle: https://maven.apache.org/docs/3.5.0/release-notes.html#overview-about-the-changes

koppor
quelle
-1

$M2_HOMEwird manchmal zum Beispiel zum Installieren verwendet Takari Extensions for Apache Maven

Eine Möglichkeit, einen $M2_HOMEWert zu finden , besteht darin, nach folgenden Elementen zu suchen mvn:

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

Und wahrscheinlich wird es sein: /opt/maven/

imriss
quelle
Ich sehe auf der verlinkten Seite nichts, was darauf hindeutet, dass M2_HOMEetwas in Takari gelesen wird. In Beispielen für Shell-Befehle, die Sie ausführen können, wird lediglich eine Platzhaltervariable verwendet.
Jesse Glick
-2

Ich habe das gleiche Problem mit folgenden Problemen gelöst:

export M2_HOME=/usr/share/maven
Miroslav Spasovski
quelle
2
Während dieser Code die Frage lösen kann, einschließlich einer Erklärung, wie und warum dies das Problem löst, würde dies wirklich dazu beitragen, die Qualität Ihres Beitrags zu verbessern, und wahrscheinlich zu mehr Up-Votes führen. Denken Sie daran, dass Sie in Zukunft die Frage für die Leser beantworten, nicht nur für die Person, die jetzt fragt. Bitte bearbeiten Sie Ihre Antwort, um Erklärungen hinzuzufügen und anzugeben, welche Einschränkungen und Annahmen gelten.
Doppel-Piepton
-7

Wir haben M2_HOME, MAVEN_HOME, M3_HOME, alle sind auf dem Markt verfügbar.
Bisher war M2_HOME die einzige Umgebungsvariable, die von allen als Standard verwendet wird.
Aufgrund der neuesten Versionen war das MAVEN_Home Standard, aber einige alte Tools versuchen immer noch, nur M2_HOME zu finden,
sodass wir sowohl M2_HOME als auch MAVEN_HOME haben sollten, um mit alten und neuen Tools zu arbeiten.
M2_HOME kann auch für beide verwendet werden

HariKishore
quelle