70

I have two version of environment variables for maven home - M2_HOME and MAVEN_HOME.

Which one needs to be set?

Martin Spamer
  • 5,437
  • 28
  • 44
developer
  • 9,116
  • 29
  • 91
  • 150

2 Answers2

95

MAVEN_HOME is for Maven 1, M2_HOME is for Maven 2 and later.

Maven 2 was a complete rewrite from Maven 1 and was not backwards compatible. Having the two different _HOME variables means it is possible to run both on the same machine.

UPDATE

As of maven 3.5.0 neither of these environment variables should be specified. Instead, the path should be updated to include the mvn executable.

axiopisty
  • 4,972
  • 8
  • 44
  • 73
prunge
  • 22,460
  • 3
  • 73
  • 80
  • 2
    And M2_HOME\bin should added to PATH as well for accessing it from any directory on command line :) – nanosoft Mar 22 '15 at 12:16
  • 1
    As of Maven 3 it is not necessary to use environement variables like `MAVEN_HOME` or `M2_HOME` anymore. The bin path of the Maven installation like `/usr/share/maven/` is just enough. – U880D Apr 04 '18 at 13:15
  • 1
    Why on the earth would they remove those environment variables ? Those environment variables made it possible to change Maven installation and the local repository directory. Now you can't mv the ~/.m2 directory to somewhere. They should work on making it XDG directory specification compliant. – Just Khaithang Dec 11 '21 at 08:23
30

And, ironically, you must still use M2_HOME and M2 for Maven version 3. Otherwise, it fails, because they didn't follow this logical approach with Maven V3.x for some bizarre reason.

Consequently, it is not easy to support Maven 2 & Maven 3 on the same machine without rewriting your configuration.

Positive Navid
  • 2,481
  • 2
  • 27
  • 41
Martin Spamer
  • 5,437
  • 28
  • 44