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