¿Cuál es la correcta Maven nombre de variable de entorno: MAVEN_HOME
, MVN_HOME
o M2_HOME
?
He encontrado algunos detalles sobre MAVEN_HOME
y M2_HOME
aquí . Pero también he visto MVN_HOME
alrededor.
¿Cuál es la correcta Maven nombre de variable de entorno: MAVEN_HOME
, MVN_HOME
o M2_HOME
?
He encontrado algunos detalles sobre MAVEN_HOME
y M2_HOME
aquí . Pero también he visto MVN_HOME
alrededor.
Respuestas:
Personalmente, nunca me ha resultado útil configurar M2_HOME
.
Lo que cuenta es su entorno $ PATH. Secuestrando parte de la respuesta de Danix, todo lo que necesitas es:
export PATH=/Users/xxx/sdk/apache-maven-3.0.5/bin:$PATH
El mvn
script calcula M2_HOME
por usted de todos modos lo que vale.
M2_HOME
(y similares) no se debe utilizar a partir de Maven 3.5.0. Consulte MNG-5607 y las Notas de la versión para obtener más detalles.
Aquí está mi configuración de Maven. Puedes usarlo como ejemplo. No necesitas nada más para usar Maven.
M2_HOME se usa para Maven 2 y 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 se usa para maven 1 y M2_HOME se usa para ubicar maven 2 . Tener las dos variables _HOME diferentes significa que es posible ejecutar ambas en la misma máquina. Y si revisa los antiguos scripts mvn.cmd , tienen algo como,
@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 ----------------------------------------------------------------------------
Mira eso @REM M2_HOME - location of maven2's installed home dir
De todos modos, el uso de este patrón ahora está obsoleto con maven 3.5 según la documentación .
Basado en problemas en el uso de M2_HOME relacionados con diferentes versiones de Maven instaladas y para simplificar las cosas, el uso de M2_HOME se ha eliminado y ya no es compatible MNG-5823 , MNG-5836 , MNG-5607
Así que ahora el mvn.cmd parece,
@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 -----------------------------------------------------------------------------
Entonces, lo que necesita es que JAVA_HOME esté configurado correctamente. Según la nueva guía de instalación (a partir del 29/12/2017) , simplemente agregue la ruta del directorio maven bin a la variable PATH. Debería funcionar.
ex: export PATH=/opt/apache-maven-3.5.2/bin:$PATH
Me tropecé con esto como juegos de chocolate M2_HOME
. Quería localizar settings.xml
.
El camino actual para settings.xml
es ir a %USERPROFILE%
. Allí, .m2
se contiene un directorio , donde se encuentra settings.xml
.
Nunca use M2_HOME
. No es compatible desde Apache Maven 3.5.0.
Detalles:
Basado en problemas de uso
M2_HOME
relacionados con diferentes versiones de Maven instaladas y para simplificar las cosas, el uso deM2_HOME
ha sido eliminado y ya no es compatible con MNG-5823 , MNG-5836 , MNG-5607 .Cambio importante para los usuarios de Windows: el uso de
%HOME%
ha sido reemplazado por%USERPROFILE%
MNG-6001
Fuente: https://maven.apache.org/docs/3.5.0/release-notes.html#overview-about-the-changes
$M2_HOME
se utiliza a veces, por ejemplo, para instalar Takari Extensions for Apache Maven
Una forma de encontrar $M2_HOME
valor es buscar mvn
:
sudo find / -name "mvn" 2>/dev/null
Y probablemente será: /opt/maven/
M2_HOME
algo en Takari haya leído. Solo está usando una variable de marcador de posición en ejemplos de comandos de shell que podría ejecutar.
He resuelto el mismo problema con lo siguiente:
export M2_HOME=/usr/share/maven
Tenemos M2_HOME, MAVEN_HOME, M3_HOME, todos están disponibles en el mercado.
Anteriormente, M2_HOME es la única variable de entorno utilizada por todos como estándar.
Pero, debido a las últimas versiones, MAVEN_Home venía como estándar, pero algunas herramientas antiguas todavía están tratando de encontrar solo M2_HOME,
por lo que deberíamos tener M2_HOME, MAVEN_HOME para mantener con herramientas antiguas y nuevas.
M2_HOME también se puede utilizar para ambos
M2_HOME
en el pasado siempre ha conducido a errores extraños, principalmenteNoClassDefFoundError
porque elmvn
comando se encontraría en el PATH, pero con otra versión de Maven encontradaM2_HOME
. Mi vida ha sido mejor desde que dejé de configurar esa variable env y solo confío en agregar.../bin/mvn
el directorioPATH
y dejar que Maven autodetecte cosas.