2014-10-28 21 views

risposta

29

Personalmente ho mai ritenuto utile per impostare M2_HOME.

Ciò che conta è il tuo ambiente $ PATH. Dirottamento parte della risposta da Danix, tutto ciò che serve è:

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

Lo script mvn calcola M2_HOME per voi comunque per quello che vale.

+0

+1. Direi che l'impostazione di 'M2_HOME' nel passato ha sempre causato errori bizzarri, principalmente' NoClassDefFoundError' perché il comando 'mvn' sarebbe stato trovato nel PATH, ma con un'altra versione di Maven trovata tramite' M2_HOME'. La mia vita è migliorata da quando ho smesso di impostare env var e baso solo aggiungere la directory '.../bin/mvn' a' PATH' e lasciare che Maven riconosca automaticamente le cose. –

16

Ecco il mio setup di Maven. Puoi usarlo come esempio. Non hai bisogno di nient'altro per usare Maven.

M2_HOME viene utilizzato sia per Maven 2 e 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 
2

$M2_HOME viene utilizzato a volte, per esempio, per installare Takari Extensions for Apache Maven

Un modo per trovare $M2_HOME valore è quello di cercare mvn:

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

E, probabilmente sarà: /opt/maven/

-3

Abbiamo M2_HOME, MAVEN_HOME, M3_HOME tutti disponibili sul mercato
In precedenza M2_HOME è l'unico ambiente var responsabile usato da tutti come standard.
Ma, a causa delle ultime versioni, MAVEN_Home è venuto come standard ma alcuni vecchi strumenti stanno ancora cercando di trovare solo M2_HOME
quindi dovremmo avere M2_HOME, MAVEN_HOME per sostenere con vecchi e nuovi strumenti.
M2_HOME può essere utilizzato anche per entrambi

2

M2_HOME (o qualsiasi altro) non deve essere utilizzato da Maven 3.5.0. Vedi MNG-5607 e Release Notes per i dettagli.

2

MAVEN_HOME è usato Maven 1 e M2_HOMEviene utilizzata per individuare Maven 2. Avere le due diverse variabili _HOME significa che è possibile eseguire entrambi sullo stesso computer. E se controlli vecchi mvn.cmd script Hanno qualcosa di simile,

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

Vedi che @REM M2_HOME - location of maven2's installed home dir

utilizzo Comunque di questo modello è ora sconsigliato con Maven 3.5 come da documentation.

Sulla base di problemi nell'utilizzo M2_HOME relative a versioni Maven differenti installate e per semplificare le cose, l'utilizzo di M2_HOME è stato rimosso e non è supportato più MNG-5823, MNG-5836, MNG-5607

Così ora il mvn.cmd sembrano,

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

Quindi quello che serve è JAVA_HOME deve essere impostato correttamente. Come da new installation guide (as of 12/29/2017), Basta aggiungere il percorso della directory bin Maven alla variabile PATH. Dovrebbe fare il trucco.

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