MAVEN_HOME、MVN_HOMEまたはM2_HOME


84

どのような正しいMavenの環境変数名です:MAVEN_HOMEMVN_HOMEまたはM2_HOME

私は約いくつかの詳細を見つけたMAVEN_HOMEし、M2_HOME ここに。しかし、私もMVN_HOME周りを見てきました。

回答:


62

個人的には、設定するのが便利だとは思っていませんM2_HOME

重要なのは$ PATH環境です。Danixからの回答の一部を乗っ取って、必要なのは次のとおりです。

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

とにかく、mvnスクリプトはそのM2_HOME価値を計算します。


3
+1。M2_HOME過去の設定では常に奇妙なエラーが発生したと言っても過言ではありません。これは主NoClassDefFoundErrorに、mvnコマンドがPATHにあるためですが、別のMavenバージョンはM2_HOME。そのenvvarの設定をやめ、.../bin/mvnのディレクトリを追加するだけでPATHMavenに自動検出させるようにしたので、私の生活は良くなりました。
Baptiste Mathus 2016年

6
「個人的には、M2_HOMEを設定することが役立つとは思っていません。」そして、あなたは正しかった。廃止予定されていること:stackoverflow.com/a/47712646/270371
davidxxx


22

これが私のMavenのセットアップです。例として使用できます。Mavenを使用するために他に何も必要ありません。

M2_HOMEは、Maven2と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

8

MAVEN_HOMEはMaven1 に使用されM2_HOMEMaven2の検索に使用されます。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

とにかく、このパターンの使用は、ドキュメントに従ってmaven3.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を正しく設定することです。あたりとして(2017年12月29日のような)新しいインストールガイド、ただ、PATH変数にMavenのbinディレクトリのパスを追加します。それはトリックを行う必要があります。

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


1

チョコレートのセットとしてこれに出くわしましたM2_HOME。見つけたかったsettings.xml

の現在の方法settings.xmlはに行くこと%USERPROFILE%です。そこには、ディレクトリ.m2が含まれていますsettings.xml

絶対に使用しないでくださいM2_HOME。Apache Maven3.5.0以降はサポートされていません。

詳細:

M2_HOMEインストールされているさまざまなMavenバージョンに関連する使用上の問題に基づいて、M2_HOME作業を簡素化するために、の使用は削除され、MNG-5823MNG-5836MNG-5607はサポートされなくなりました。

Windowsユーザーにとっての重要な変更:の使用法はMNG-6001に%HOME%置き換えられました%USERPROFILE%

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


-1

$M2_HOMEたとえば、インストールするために時々使用されます Takari Extensions for Apache Maven

$M2_HOME値を見つける1つの方法は、次を検索することですmvn

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

そして、おそらくそれは次のようになります: /opt/maven/


リンク先のページにM2_HOMEは、タカリの何かが読んでいることを示唆するものは何もありません。実行できるシェルコマンドの例では、プレースホルダー変数を使用しているだけです。
ジェシーグリック

-2

私は以下で同じ問題を解決しました:

export M2_HOME=/usr/share/maven

2
このコードは問題を解決する方法と理由の説明含めて質問を解決するかもしれませんが、投稿の品質を向上させるのに本当に役立ち、おそらくより多くの賛成票をもたらすでしょう。あなたは今尋ねている人だけでなく、将来読者のために質問に答えていることを忘れないでください。回答を編集して説明を追加し、適用される制限と前提条件を示してください。
ビープ音が2回鳴る

-7

M2_HOME、MAVEN_HOME、M3_HOMEはすべて市場で入手可能です。
以前は、M2_HOMEは、すべてが標準として使用する唯一の環境変数です。
ただし、最新のリリースにより、MAVEN_Homeが標準で提供されましたが、一部の古いツールはまだM2_HOMEのみを検索しようとしているため
、新旧のツールで維持するにはM2_HOME、MAVEN_HOMEの両方が必要です。
M2_HOMEは両方にも使用できます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.