Mavenローカルリポジトリの場所を取得する方法はありますか?
次のコマンドを使用すると、Mavenに特定の設定ファイルを使用させることができます。
mvn -s < path to settings file >
settings.xml
ファイルを編集してリポジトリの場所を設定できることは知っていますが、Mavenコマンドで現在のデフォルト値を取得できますか?
回答:
ローカルリポジトリのみが必要な場合は、次のことを試してください。
mvn help:evaluate -Dexpression=settings.localRepository | grep -v '\[INFO\]'
編集
Mavenヘルププラグインの最近のバージョンでは、出力をgrepする必要をなくすことができる、というevaluate
目標に役立つパラメーターが導入されたため、数年後にこれを再検討しforceStdout
ています。
mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout
echo -e "INFO\nOFNI\nI\nIfoobar" | grep '[INFO]'
mvn help:evaluate -Dexpression=settings.localRepository | grep -E '^([a-zA-Z]:|/)'
はい、-X
または--debug
オプションで取得できます。例:mvn -X
...
[DEBUG] Reading global settings from C:\Maven\conf\settings.xml
[DEBUG] Reading user settings from C:\segphault\.m2\settings.xml
[DEBUG] Using local repository at C:\Repo
...
Mavenヘルププラグインは、ローカルリポジトリパスを含むローカル設定を表示します。
次のコマンドが必要です。
mvn help:effective-settings
出力には、XML形式の設定が表示されます。localRepository要素を探します。
<localRepository xmlns="http://maven.apache.org/SETTINGS/1.1.0">/home/jrs/.mavenRepo</localRepository>
ではそれまでの間、あなたは簡単な方法でそれを行うことができます。
mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout
これを直接使用して、次のようなシェル変数を割り当てることもできます。
RESULT=$(mvn help:evaluate -Dexpression=settings.localRepository -q -DforceStdout)
重要な注意:Mavenの最新バージョンと、もちろんmaven-help-pluginの最新バージョンを使用してください...
これには、改行などのない結果が含まれます。
/home/.m2ディレクトリにあるはずです。フォルダはおそらく隠されています。したがって、非表示のフォルダを表示するには、Ctrl + Hを押す必要があります。
通常は次の場所にありますC:\Users\USER_NAME\.m2\repository
。
ただし、mvn help:effective-settings
コマンドは確実に応答xmlにローカルパスを表示します。
${user.home}/.m2/repository
でオーバーライドできるデフォルトです。 6年以上前にここでの回答で言及されています:stackoverflow.com/a/6670563/1744774。mvn help:effective-settings
これは、-X
オプションを使用してデバッグモードを有効にし、使用されているローカルリポジトリに言及している行を見つけることで実現できます。
| grep -v '\[INFO\]'
あなたの正規表現には厄介な副作用があると思います。