MVNインストールまたはMVNパッケージ


134

私はMavenを初めて使用します。MyEclipseでmavenが構成されたJavaベースのWebプロジェクトがあります。
ここで、Javaファイルを変更した場合、それを行う必要がありますRun as -> Mvn installMvn package

回答:


158

http://maven.apache.org/guides/getting-started/maven-in-five-minutes.htmlから

package:コンパイルされたコードを受け取り、JARなどの配布可能な形式でパッケージ化します。

install:パッケージをローカルリポジトリにインストールし、他のプロジェクトの依存関係としてローカルで使用する

したがって、あなたの質問への答えは、それをローカルリポジトリにインストールするかどうかによって異なります。インストールは、目標フェーズスタックの上位にあるため、パッケージも実行します。


メインフォルダーコードとテストフォルダーコードをJarに変換するプロジェクトがあります。次に、これをネクサスにデプロイして、他のプロジェクトで使用できるようにします。私のデプロイコマンドは「mvn clean deploy -DskipTests」です。ローカルリポジトリにインストールするのではなく、このコマンドパッケージを作成できますか?
MasterJoe 2018

@ MasterJoe2 「それでは、これをネクサスにデプロイしたい」それが何をするかdeployです。に置き換えるとpackage、Nexusにデプロイされません。
walen

37

mvn install最も頻繁に使用されるオプションです。
mvn packagemavenビルドプロセスのいくつかの問題をデバッグする場合にのみ、めったに使用されません。

参照:http : //maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html

mvn packageはjarファイルのみを作成することに注意してください。他のコードがそれらのjarに依存している場合は、
mvn installそれ実行し、jar(およびクラスなど)ファイルを適切な場所にインストールします。

私は通常mvn clean install、これにより、targetディレクトリが削除され、その場所にすべてのjarが再作成されます。
クリーンは、時々邪魔になる可能性のある不要なものや削除されたものを助けます。
むしろ、デバッグ(時々)を常に最初からやり直してください。


27
パッケージが2ポイントで使用されることはめったにありません。1)installを実行するたびに実行されます。2).warを作成している場合は、ローカルリポジトリでwarを必要としないため、パッケージを実行するだけで問題ありません。
ジョシュアウィルソン

5
答えは説明されていませんが、なぜローカルリポジトリにインストールしたいのですか?私の理解では、プロジェクトが正しく設定されている場合、reactorはモジュール間の依存関係を提供します。プロジェクトが正しく設定されていない場合、インストールはこの事実を隠し、間違ったアーティファクトを使用する可能性があります。依存するプロジェクトがある場合、何らかの理由で個別にビルドする必要があります。その場合にのみ、インストールします。
Vsevolod Golovanov

11

ライフサイクルリファレンスから、installはプロジェクトの統合テストを実行しますが、パッケージは実行しません。

生成された成果物をインストールする必要がない場合は、少なくともverifyを使用してください。


5

また、プロジェクトが相互に依存する複数のモジュールで構成されている場合は、「パッケージ」ではなく「インストール」を使用する必要があります。そうしないと、ビルドが失敗し、インストールコマンドを使用するとモジュールAがパッケージ化されます。ローカルリポジトリにデプロイされ、モジュールBが依存関係としてモジュールAを必要とする場合、ローカルリポジトリからアクセスできます。


4

(アーティファクトのような)リモートリポジトリを使用していない場合は、プレーンオールドを使用します。 mvn clean install

かなり古いトピックですが、AFAIK、独自のリポジトリを実行して(たとえば、アーティファクトを使用して)チーム間でjarを共有する場合は、

mvn clean deploy

代わりに。

このようにして、継続的インテグレーションサーバーは、すべての依存関係がリモートリポジトリに正しくプッシュされていることを確認できます。見つからなかった場合、mvnはそれをCIローカルm2リポジトリーで見つけることができません。


1
mvn clean deployではなく、mvn clean deployについて話していると思います
Mayjak

2

package-コンパイルされたコードを受け取り、JARやWARファイルなどの配布可能な形式でパッケージ化します。install-パッケージをローカルリポジトリにインストールし、ローカルで他のプロジェクトの依存関係として使用します


2

適切な方法でありますmvn packageあなたが、ビルドのコア部分に正しく物事をしたならば、ローカルリポジトリにあなたのパッケージをインストールする必要はありません。

さらに、Travisを使用する場合、依存関係を「キャッシュ」することができます。 $HOME.m2/repository。これは、独自のプロジェクトにパッケージを使用場合にです。

実用的には、mvn site実行しようとする場合でも、通常はmvn install前に実行する必要があります。どちらか一方にバグが多すぎるかsite、不十分にメンテナンスされたプラグインが多数あります。


0

これは、Javaファイルを変更した後に達成しようとしていることに依存します。Mavenプロセスをテストするまでは、何もする必要はありません。Eclipse / MyEclipseは必要なものをビルドし、プロジェクト内の適切な場所に出力を配置します。また、Mavenで明示的に何もする必要なく、それを実行またはデプロイすることもできます(たとえば、Webプロジェクトの場合)。最後に、プロジェクトをmavenリポジトリーにインストールするには、mavenをインストールする必要があります。MyEclipseが自動的に実行しない他のMavenゴールを実行することもできます。

私が言うように、それはあなたが何をしたいかに依存します。

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