私は春のブートアプリケーションを作成したとき、私は見ることができましたmvnw
し、mvnw.cmd
プロジェクトのルートにあるファイル。これら2つのファイルの目的は何ですか?
私は春のブートアプリケーションを作成したとき、私は見ることができましたmvnw
し、mvnw.cmd
プロジェクトのルートにあるファイル。これら2つのファイルの目的は何ですか?
回答:
これらのファイルはMavenラッパーからのものです。Gradleラッパーと同様に機能します。
これにより、パスにMavenがインストールされていなくても、Mavenプロジェクトを実行できます。見つからない場合は、正しいMavenバージョンをダウンロードします(デフォルトでは、ユーザーのホームディレクトリにある限り)。
このmvnw
ファイルはLinux(bash)mvnw.cmd
用であり、Windows環境用です。
必要なすべてのMavenラッパーファイルを作成または更新するには、次のコマンドを実行します。
mvn -N io.takari:maven:wrapper
別のバージョンのmavenを使用するには、次のようにバージョンを指定できます。
mvn -N io.takari:maven:wrapper -Dmaven=3.3.3
コマンドの代わりに使用できるmvnwがプロジェクトにすでにある場合PATH
は、どちらのコマンドにもmaven on (システム変数でmaven bin
へのパスを追加するPath
)が必要です。./mvnw
mvn
コマンド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のラッパーは、 Mavenの(またはすべてでMavenをインストールしたくないユーザーのための)の特定のバージョンを必要とするプロジェクトのための優れた選択肢です。オペレーティングシステムに多くのバージョンをインストールする代わりに、プロジェクト固有のラッパースクリプトを使用できます。
mvnw:完全にインストールされたMavenの代わりに使用される実行可能なUnixシェルスクリプト
mvnw.cmd:Windows環境用です
ユースケース
ラッパーは、次のようなさまざまなオペレーティングシステムで動作します。
その後、Unixシステムに対して次のような目標を実行できます。
./mvnw clean install
そして、バッチの次のコマンド:
./mvnw.cmd clean install
ラッパーのプロパティに指定されたMavenがない場合は、ダウンロードされ$USER_HOME/.m2/wrapper/dists
てシステムのフォルダーにインストールされます。
Mavenラッパープラグイン
単純なSpring Bootプロジェクトで自動インストールを行うためのMavenラッパープラグイン。
まず、プロジェクトのメインフォルダーに移動して、次のコマンドを実行する必要があります。
mvn -N io.takari:maven:wrapper
Mavenのバージョンを指定することもできます。
mvn -N io.takari:maven:wrapper -Dmaven=3.5.2
オプション-Nは-non-recursiveを意味するため、ラッパーは現在のディレクトリのメインプロジェクトにのみ適用され、サブモジュールには適用されません。
現時点では、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 "$@"
mvn
使用できましたが、Maven操作にはコマンドを使用してい./mvnw
ました。