mvn clean package
との違いは正確には何mvn clean install
ですか? これらのコマンドの両方を実行すると、どちらも同じことをしているように見えます。
6 に答える
まあ、両方ともきれいになります。つまり、ターゲット フォルダーが削除されます。本当の問題は、パッケージとインストールの違いは何ですか?
package
コードをコンパイルし、パッケージ化します。たとえば、プロジェクトが jar であると pom が示している場合、プロジェクトをパッケージ化してターゲット ディレクトリのどこかに (デフォルトで) 配置すると、jar が作成されます。
install
コンパイルしてパッケージ化しますが、ローカル リポジトリにもパッケージを配置します。これにより、他のプロジェクトがそれを参照し、ローカル リポジトリから取得できるようになります。
clean の機能 (両方のコマンドで共通) - 以前のビルドで生成されたすべてのファイルを削除します
コマンドpackageとinstallの違いになると、まずMaven プロジェクトのライフサイクルを理解する必要があります
これらはmavenのデフォルトのライフサイクルフェーズです
- 検証- プロジェクトが正しく、必要なすべての情報が利用可能であることを検証します
- compile - プロジェクトのソース コードをコンパイルします。
- test - 適切な単体テスト フレームワークを使用して、コンパイルされたソース コードをテストします。これらのテストでは、コードをパッケージ化またはデプロイする必要はありません
- package - コンパイルされたコードを取得し、JAR などの配布可能な形式でパッケージ化します。
- 検証- 統合テストの結果に対してチェックを実行し、品質基準が満たされていることを確認します
- install - 他のプロジェクトの依存関係としてローカルで使用するために、パッケージをローカル リポジトリにインストールします。
- deploy - ビルド環境で実行され、他の開発者やプロジェクトと共有するために最終パッケージをリモート リポジトリにコピーします。
Maven がどのように機能するかというと、ライフサイクル フェーズのいずれかに対してコマンドを実行すると、コマンド自体を実行する前に、デフォルトの各ライフ サイクル フェーズが順番に実行されます。
実行順序
検証 >> コンパイル >> テスト (オプション) >> パッケージ >> 検証 >> インストール >> デプロイ
したがって、コマンドmvn packageを実行すると、パッケージまでのすべてのライフサイクル フェーズのコマンドが実行されます。
検証 >> コンパイル >> テスト (オプション) >> パッケージ
また、mvn installに関しては、インストールまでのすべてのライフサイクル フェーズのコマンドを実行します。これには、パッケージも含まれます。
検証 >> コンパイル >> テスト (オプション) >> パッケージ >> 検証 >> インストール
したがって、実質的には、installコマンドはpackageコマンドが行うすべてのことと、さらにいくつかのことを行います (他のプロジェクトの依存関係としてローカルで使用するために、パッケージをローカルリポジトリにインストールします)。
パッケージは、POM ファイルに従って Jar/war を生成します。 installは、生成された jar ファイルを、他の依存関係がある場合はローカル リポジトリにインストールします。
インストール段階はパッケージ段階の後に来る
パッケージとインストールは、maven ビルド ライフサイクルのさまざまなフェーズです。package フェーズはそれより前のすべてのフェーズを実行し、プロジェクトを jar としてパッケージ化して停止します。同様に、インストール フェーズは前のすべてのフェーズを実行し、最終的に他の依存プロジェクトのためにプロジェクトをローカルにインストールします。
Maven ビルドのライフサイクルを理解するには、次のリンクを参照してください https://ayolajayamaha.blogspot.in/2014/05/difference-between-mvn-clean-install.html