Spring Bootアプリケーションを作成したとき、プロジェクトのルートにmvnw
ファイルとmvnw.cmd
ファイルがあります。これら2つのファイルの目的は何ですか?
これらのファイルは Mavenラッパー からのものです。 Gradleラッパー と同様に機能します。
これにより、Mavenをインストールしてパス上に存在させることなくMavenプロジェクトを実行できます。見つからない場合は、正しいMavenバージョンをダウンロードします(デフォルトでは、ユーザーのホームディレクトリにあります)。
mvnw
name__ファイルはLinux(bash)用で、mvnw.cmd
はWindows環境用です。
必要なMaven Wrapperファイルをすべて作成または更新するには、次のコマンドを実行します。
mvn -N io.takari:maven:wrapper
異なるバージョンのmavenを使用するには、以下のようにバージョンを指定できます。
mvn -N io.takari:maven:wrapper -Dmaven=3.3.3
どちらのコマンドもPATH
name__(システム変数のbin
name__にmaven Path
name__へのパスを追加)にmavenが必要です。コマンドにmvn
name__の代わりに./mvnw
を使用できます。
コマンド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
現在のところ、これまでのところ最良の選択肢は、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 "$@"