web-dev-qa-db-ja.com

EclipseビルドプロジェクトとMavenコンパイルコマンドの違い

Eclipse "Build Project"コマンドはMavenコマンド "mvn compile"?両方とも基本的に同じことをしますか?

はいの場合、「mvn clean install」を実行した後にSTSで「Build Project」を実行する必要があるのはなぜですか?問題? 「mvn clean install」を実行すると、プロジェクトがすでにコンパイルされているはずです。 STSでプロジェクトを更新するだけで、プロジェクトを実行できませんか?

いいえの場合、JavaコンパイラがJavaを実装しているため、Eclipseビルドは異なります=クラスを構築するための言語仕様?しかし、次の Apache Mavenリンク は、デフォルトのコンパイラがjavax.tools.JavaCompilerであることを示しています(ところで、私はJava 1.6を使用しています) )。

13
Arthas

短い答えはnoです。mavenビルドとEclipseビルドは同じではありません。

基本的に、Eclipseには独自の方法でビルドする方法があり、Mavenとはほとんど関係ありません。最も基本的なレベルでは、Eclipseは独自のJavaコンパイラー(Eclipse JDTの一部)を使用してJavaコンパイルを実行します。

それらがどのように異なるのかについて正確な答えを出すのは難しく、状況は非常に複雑で、インストールしたもの(Eclipseプラグイン)に正確に依存します。

Eclipseの動作がコマンドラインでMavenが行う動作に最も類似するように、可能な限り近似するためには、m2e(maven Eclipseツール)をインストールする必要があります。

M2Eは、Eclipse IDEの動作をMavenのコマンドラインの動作にできるだけ近づけるように「エミュレート」しようとします。これは、Eclipseプロジェクトを構成することによって行われます。たとえば、maven pomに基づいてソースフォルダー、クラスパスなどを設定します。これは、pomが「ファンシー」なことを行わない場合(つまり、あまり一般的でないMavenプラグインを使用する場合)にうまく機能します。

PomでMavenプラグインを使用して、コードなどを生成するなどの「特別な」ことを行う場合、m2eにはプラグインメカニズムがあり、Mavenプラグインの作成者は対応するEclipseプラグインを定義して、Eclipseの実行方法を「教える」ことができます。同じこと。

すべてのMavenプラグインに対応するEclipseプラグインがあるとは限らないため、これは厄介なことになる可能性があり、たとえプラグインがあっても、Eclipseのインスタンスに自動的にインストールされません。

いくつかのpomのプラグインについて「Eclipseを教える」ためのプラグインがない場合。 M2eは ライフサイクルマッピングに関するエラー を提供します。これは、m2eとmavenのコマンドラインがプロジェクトに対して「同じこと」を行わない可能性があることを示しており、何らかの方法で解決することは(たとえば、対応するEclipseの「プロジェクトコンフィギュレーター」をインストールすることにより)ます。

15
Kris

私はMavenを知りませんが、Eclipseビルドは一部のプロジェクトのANTビルドとは異なるため、Mavenの場合もそうです。 Eclipseには、独自の内部増分ビルドメカニズムがあります。

Eclipseの内部ビルド(EclipseのビルドプロジェクトまたはBuild AllまたはClean)とMaven/Antビルドは、基本的に同じことを行います。つまり、どちらもソースコードファイルをコンパイルします。明らかな違いは、Eclipse内部ビルドではEAR、WARなどのファイルが生成されないことです。これは、ANT/Mavenを使用して行います。

ANT/Mavenでそれぞれの要素を使用してクラスパスを指定し、Eclipseでビルドパスを構成することで同様の考え方が行われる場合、Eclipseが内部ビルドを実行すると、それらのJARまたはランタイムライブラリを参照できます。

コンパイラーに関しては、Eclipseを使用してビルドする場合、Eclipseがパッケージ化されているJavaバージョンの独自の内部javacコンパイラーを使用します。 Javaバージョンは、ウィンドウ>設定> Java>コンパイラを使用して見つけることができます。独自のプロジェクトビルドの場合、Java_HOMEを参照します。

0
hagrawal