私はMavenを初めて使用します。MyEclipseで構成されたJavaベースのWebプロジェクトがあります。
今、Javaファイルを変更した場合、Run as -> Mvn install
またはMvn package
を実行する必要がありますか?
from http://maven.Apache.org/guides/getting-started/maven-in-five-minutes.html
package
:コンパイルされたコードを取得し、JARなどの配布可能な形式でパッケージ化します。
install
:他のプロジェクトでローカルに依存関係として使用するために、パッケージをローカルリポジトリにインストールします
したがって、あなたの質問に対する答えは、それをあなたのローカルリポジトリにインストールするかどうかに依存します。パッケージは、目標フェーズスタックの上位にあるため、インストールも実行されます。
mvn install
は、最もよく使用されるオプションです。mvn package
はめったに使用されません。mavenビルドプロセスに関する問題をデバッグしている場合のみです。
参照: http://maven.Apache.org/guides/introduction/introduction-to-the-lifecycle.html
mvn package
はjarファイルのみを作成することに注意してください。mvn install
は、他のコードがそれらのjarに依存している場合、適切な場所にjar(およびクラスなど)ファイルをインストールしますand。
私は通常mvn clean install
を行います。これにより、target
ディレクトリが削除され、その場所にあるすべてのjarが再作成されます。
クリーンは、邪魔になることがある不要なものや削除されたものに役立ちます。
その後、(時々)デバッグするのは、常に新鮮な状態で開始するだけです。
ライフサイクルリファレンス から、installはプロジェクトの統合テスト、packageしません。
生成されたアーティファクトを本当にインストールする必要がない場合は、少なくともverifyを使用します。
また、プロジェクトが相互に依存する複数のモジュールで構成されている場合は、「パッケージ」ではなく「インストール」を使用する必要があります。そうしないと、ビルドが失敗し、インストールコマンドを使用するとモジュールAがパッケージ化されますローカルリポジトリにデプロイし、モジュールBが依存関係としてモジュールAを必要とする場合、ローカルリポジトリからモジュールAにアクセスできます。
notを使用している場合remoteリポジトリ(アーティファクトなど)を使用している場合は、プレーンな古いものを使用します:mvn clean install
かなり古いトピックですが、あなたのチーム間でjarを共有するために独自のリポジトリ(例えば、アーティファクト付き)を実行する場合、あなたは使用したいかもしれません
mvn clean deploy
代わりに。
これにより、継続的インテグレーションサーバーは、すべての依存関係がリモートリポジトリに正しくプッシュされることを確認できます。見つからなかった場合、mvnはCIローカルm2リポジトリでそれを見つけることができません。
package-コンパイルされたコードを取得し、JARファイルやWARファイルなどの配布可能な形式でパッケージ化します。 install-パッケージをローカルリポジトリにインストールし、他のプロジェクトの依存関係としてローカルで使用します
properの方法はmvn package
です。ビルドのコア部分で正しく処理した場合、ローカルリポジトリにパッケージをインストールする必要はありません。
さらに、Travisを使用する場合、独自のプロジェクトにパッケージを使用する場合、$HOME.m2/repository
に影響しないため、依存関係を「キャッシュ」できます。
実際には、mvn site
を実行しようとする場合でも、通常は前にmvn install
を実行する必要があります。 site
のバグが多すぎるか、メンテナンスが不十分なプラグインが多数あります。
Javaファイルを変更した後に何を達成しようとしているかによって異なります。 Mavenプロセスをテストするまで、何もする必要はありません。 Eclipse/MyEclipseは必要なものをビルドし、プロジェクト内の適切な場所に出力を配置します。また、mavenで明示的に何かをする必要なく、それを実行またはデプロイできます(たとえば、Webプロジェクトの場合)。最後に、mavenリポジトリにプロジェクトをインストールするには、mavenのインストールを行う必要があります。また、MyEclipseが自動的に実行しない他のMaven目標を実行することもできます。
私が言うように、それはあなたが何をしたいかによって異なります。