「mvn clean install」と「mvn install」の違いは何ですか?


回答:


214

cleanMavenでの独自のビルドライフサイクルフェーズ(アクションまたはタスクと見なすことができます)です。各モジュールのフェーズを実行する前に、各モジュールでフェーズmvn clean installを実行するようMavenに指示します。cleaninstall

これにより、コンパイル済みのファイルがすべてクリアされ、実際に各モジュールを最初からコンパイルしていることが確認できます。


13
私はいつもインストールのフェーズの1つとしてクリーンを含めて考えていました...これが表示されるまで
Junchen Liu

14
@shanyangqu残念ながら、違います。 clean別のライフサイクルにあるため、デフォルトでは呼び出されません。
Powerlord 2015年

47

Mavenでは、コマンドラインで目標またはライフサイクルフェーズのいずれか(または両方)を指定できます。

cleanおよびinstallは、異なるプラグイン実行がバインドされている2つの異なるライフサイクルフェーズです(デフォルトごと、またはpom.xmlで明示的に

clean相は、大会ごとに、すなわちそれは、以前のビルドによって作成されたものをクリーンアップし、ビルド再現性を作るためのものです。ほとんどの場合、これはを呼び出すことで行われclean:clean、バインドされているディレクトリ${project.build.directory}(通常は「ターゲット」と呼ばれます)を削除します


6
「インストール」はライフサイクルではありません。これは、デフォルトのライフサイクルのフェーズです。「クリーン」なライフサイクルがありますが、このパラメータは「クリーン」ライフサイクル自体ではなく、「クリーン」ライフサイクルの「クリーン」フェーズを指定します。
Puce、

1
@Puce true、私はライフサイクルではなく「フェーズ」を意味した
ショーンパトリックフロイド

38

mavenで複数のターゲットゴールを呼び出すことができます。最初にmvn clean install呼び出しclean、次にinstall。クリーンアップは標準的なターゲットではなく、インストールごとに自動的に実行されるわけではないため、手動でクリーンアップする必要があります。

cleanターゲットフォルダを削除します-すべてのクラスファイル、Javaドキュメント、jar、レポートなどを削除します。そうしないcleanと、対応するソースファイルが(簡単に)変更されていないときにクラスをコンパイルしないように、Mavenは「実行する必要があること」だけを行います。

私たちはそれをアリのターゲットと呼び、メイベンのゴールと呼びます


1
このコンテキストでは、クリーンでインストールはライフサイクルのフェーズであり、目標ではないと思います。
JL_SO


4

@Andreas_DのDitto、さらに、プロジェクトでSpringを1つのバージョンから別のバージョンに更新せずにクリーンアップを実行すると、アーティファクトで両方が発生します。MavenでFlex開発を行う場合、これによく遭遇しました。

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