What is the difference between M2_HOME and MAVEN_HOME

MavenDevelopment Environment

Maven Problem Overview


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

Which one needs to be set?

Maven Solutions


Solution 1 - Maven

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.

Solution 2 - Maven

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.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestiondeveloperView Question on Stackoverflow
Solution 1 - MavenprungeView Answer on Stackoverflow
Solution 2 - MavenMartin SpamerView Answer on Stackoverflow