web-dev-qa-db-ja.com

Mvnwおよびmvnw.cmdファイルの目的は何ですか?

Spring Bootアプリケーションを作成したとき、プロジェクトのルートにmvnwファイルとmvnw.cmdファイルがあります。これら2つのファイルの目的は何ですか?

179
shaunthomas999

これらのファイルは Mavenラッパー からのものです。 Gradleラッパー と同様に機能します。

これにより、Mavenをインストールしてパス上に存在させることなくMavenプロジェクトを実行できます。見つからない場合は、正しいMavenバージョンをダウンロードします(デフォルトでは、ユーザーのホームディレクトリにあります)。

mvnwname__ファイルはLinux(bash)用で、mvnw.cmdはWindows環境用です。


必要なMaven Wrapperファイルをすべて作成または更新するには、次のコマンドを実行します。

mvn -N io.takari:maven:wrapper

異なるバージョンのmavenを使用するには、以下のようにバージョンを指定できます。

mvn -N io.takari:maven:wrapper -Dmaven=3.3.3

どちらのコマンドもPATHname__(システム変数のbinname__にmaven Pathname__へのパスを追加)にmavenが必要です。コマンドにmvnname__の代わりに./mvnwを使用できます。

253
Dodge

コマンドmvnwは、最初の使用時にデフォルトで~/.m2/wrapperにダウンロードされるMavenを使用します。

MavenのURLは各プロジェクトの.mvn/wrapper/maven-wrapper.propertiesで指定されています。

distributionUrl=https://repo1.maven.org/maven2/org/Apache/maven/Apache-maven/3.3.9/Apache-maven-3.3.9-bin.Zip

Mavenのバージョンを更新または変更するには、次のコマンドを呼び出します(マルチモジュールプロジェクトの場合は--non-recursiveについて忘れないでください)。

./mvnw io.takari:maven:wrapper -Dmaven=3.3.9 

あるいは手動で.mvn/wrapper/maven-wrapper.propertiesを修正するだけです。

Mavenを使用して最初からラッパーを生成するには(既にPATHを実行する必要があります。)

mvn io.takari:maven:wrapper -Dmaven=3.3.9 
23
Michal Kordas

現在のところ、これまでのところ最良の選択肢は、Mavenコンテナをビルダーツールとして使用することです。このようなmvn.shスクリプトで十分です。

#!/bin/bash
docker run --rm -ti \
 -v $(pwd):/opt/app \
 -w /opt/app \
 -e TERM=xterm \
 -v $HOME/.m2:/root/.m2 \
 maven mvn "$@"
3
André