【问题标题】:MAVEN_HOME, MVN_HOME or M2_HOME [duplicate]MAVEN_HOME、MVN_HOME 或 M2_HOME [重复]
【发布时间】:2014-12-23 22:50:10
【问题描述】:

什么是正确的 Maven 环境变量名称:MAVEN_HOMEMVN_HOMEM2_HOME

我发现了一些关于 MAVEN_HOMEM2_HOME here 的详细信息。但我也见过MVN_HOME

【问题讨论】:

    标签: java maven maven-2 maven-3


    【解决方案1】:

    这是我的 Maven 设置。您可以将其用作示例。使用 Maven 不需要其他任何东西。

    M2_HOME 用于 Maven 2 和 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 很有用。

      重要的是您的 $PATH 环境。劫持 Danix 的部分答案,你只需要:

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

      无论如何,mvn 脚本都会为您计算 M2_HOME 的价值。

      【讨论】:

      • +1。我什至会说过去设置M2_HOME 总是会导致奇怪的错误,主要是NoClassDefFoundError,因为mvn 命令会在PATH 中找到,但通过M2_HOME 可以找到另一个Maven 版本。自从我停止设置那个 env var 并且只依赖将 .../bin/mvn 的目录添加到 PATH 并让 Maven 自动检测之后,我的生活变得更好了。
      • “我个人从未发现设置 M2_HOME 很有用。”你是对的。已弃用:stackoverflow.com/a/47712646/270371
      【解决方案3】:

      $M2_HOME有时被使用,例如安装Takari Extensions for Apache Maven

      查找$M2_HOME 值的一种方法是搜索mvn

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

      而且,可能是:/opt/maven/

      【讨论】:

      • 我在链接页面上没有看到任何表明 M2_HOME 被 Takari 中的某些内容读取的内容。它只是在您可以运行的 shell 命令示例中使用占位符变量。
      【解决方案4】:

      我们有 M2_HOME、MAVEN_HOME、M3_HOME 都可以在市场上买到
      以前 M2_HOME 是唯一被所有人用作标准的环境变量。
      但是,由于最新版本,MAVEN_Home 已成为标准,但一些旧工具仍在尝试仅找到 M2_HOME
      所以我们应该同时拥有 M2_HOME 和 MAVEN_HOME 来支持新旧工具。
      M2_HOME 也可以同时用于两者

      【讨论】:

        【解决方案5】:

        M2_HOME(和类似的)不能用于 Maven 3.5.0。详情请参阅MNG-5607Release Notes

        【讨论】:

          【解决方案6】:

          MAVEN_HOME 用于 maven 1M2_HOME 用于定位 maven 2。拥有两个不同的 _HOME 变量意味着可以在同一台机器上同时运行这两个变量。 如果你检查旧的 mvn.cmd 脚本,他们有类似的东西,

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

          看到@REM M2_HOME - location of maven2's installed home dir

          根据documentation,现在 maven 3.5 已弃用此模式的任何用法。

          基于安装的不同Maven版本相关的M2_HOME使用问题,为了简化,M2_HOME的使用已被移除,不再支持MNG-5823MNG-5836MNG-5607

          所以现在 mvn.cmd 看起来像,

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

          所以你需要正确设置 JAVA_HOME。根据new installation guide (as of 12/29/2017), 只需将 maven bin 目录路径添加到 PATH 变量即可。它应该可以解决问题。

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

          【讨论】:

            【解决方案7】:

            我已经解决了以下相同的问题:

            export M2_HOME=/usr/share/maven
            

            【讨论】:

            • 虽然此代码可以解决问题,including an explanation 说明如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。
            【解决方案8】:

            我偶然发现了这个巧克力套装M2_HOME。我想定位settings.xml

            settings.xml 的当前方式是转到%USERPROFILE%。在那里,包含一个目录.m2,可以在其中找到settings.xml

            永远不要使用M2_HOME。自 Apache Maven 3.5.0 起不受支持。

            详情:

            基于使用M2_HOME与安装的不同Maven版本相关的问题并简化事情,M2_HOME的使用已被删除,不再支持MNG-5823MNG-5836MNG-5607

            Windows 用户的重要更改:%HOME% 的用法已替换为 %USERPROFILE% MNG-6001

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

            【讨论】:

              猜你喜欢
              • 2013-06-12
              • 2016-03-05
              • 2015-07-28
              • 2016-12-03
              • 1970-01-01
              • 2013-03-20
              • 1970-01-01
              • 2015-10-10
              相关资源
              最近更新 更多