MAVEN_HOME, MVN_HOME or M2_HOME

前端 未结 8 1011
春和景丽
春和景丽 2020-12-07 18:28

What\'s the correct Maven environment variable name: MAVEN_HOME, MVN_HOME or M2_HOME?

I\'ve found some details about M

相关标签:
8条回答
  • 2020-12-07 18:46

    M2_HOME (and the like) is not to be used as of Maven 3.5.0. See MNG-5607 and Release Notes for details.

    0 讨论(0)
  • 2020-12-07 18:51

    I've personally never found it useful to set M2_HOME.

    What counts is your $PATH environment. Hijacking part of the answer from Danix, all you need is:

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

    The mvn script computes M2_HOME for you anyway for what it's worth.

    0 讨论(0)
  • 2020-12-07 18:51

    Here is my Maven setup. You can use it as an example. You don't need anything else in order to use Maven.

    M2_HOME is used for both Maven 2 and 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
    
    0 讨论(0)
  • 2020-12-07 18:51

    MAVEN_HOME is used for maven 1 and M2_HOME is used to locate maven 2. Having the two different _HOME variables means it is possible to run both on the same machine. And if you check old mvn.cmd scripts they have something like,

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

    See that @REM M2_HOME - location of maven2's installed home dir

    Anyway usage of this pattern is now deprecated with maven 3.5 as per the documentation.

    Based on problems in using M2_HOME related to different Maven versions installed and to simplify things, the usage of M2_HOME has been removed and is not supported any more MNG-5823, MNG-5836, MNG-5607

    So now the mvn.cmd look like,

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

    So what you need is JAVA_HOME to be set correctly. As per the new installation guide (as of 12/29/2017), Just add the maven bin directory path to the PATH variable. It should do the trick.

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

    0 讨论(0)
  • 2020-12-07 18:51

    $M2_HOMEis used sometimes, for example, to install Takari Extensions for Apache Maven

    One way to find $M2_HOME value is to search for mvn:

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

    And, probably it will be: /opt/maven/

    0 讨论(0)
  • 2020-12-07 18:58

    I stumbled over this as chocolatey sets M2_HOME. I wanted to locate settings.xml.

    The current way for settings.xml is to go to %USERPROFILE%. There, a directory .m2 is contained, where one finds settings.xml.

    Never use M2_HOME. It is unsupported since Apache Maven 3.5.0.

    Details:

    Based on problems in using M2_HOME related to different Maven versions installed and to simplify things, the usage of M2_HOME has been removed and is not supported any more MNG-5823, MNG-5836, MNG-5607.

    Important change for windows users: The usage of %HOME% has been replaced with %USERPROFILE% MNG-6001

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

    0 讨论(0)
提交回复
热议问题