web-dev-qa-db-ja.com

intellij Project makeとMaven Compileの違いは?

Mavenモジュールで作業する場合、Intellijビルド->プロジェクトの作成とMavenプロジェクト->ルートポン->コンパイルフェーズの違いは何ですか。

Intellijはmavenを呼び出しますか?両方ともソースを同じ場所にコンパイルしますか?両方ともリソースファイルをコピーしますか?なぜ両方のオプションが必要なのですか? intellijは依存関係を自動的にダウンロードしますか、mavenコンパイルを使用せずにプロジェクトmakeを呼び出すことができますか?

intellij project: two ways of compiling

41
omer727

実際には、実行するタスクに関しては、デフォルトでjavax.tools.JavaCompilerを使用してプロジェクトのソースとテストパスをコンパイルするという点で非常に似ています。

intellijはmavenを呼び出しますか?

いいえ、デフォルトではありません。これはIntelliJの組み込みのJavaコンパイラーであり、一部のJavaプロジェクトはmavenを使用しません。

両方ともソースを同じ場所にコンパイルしますか?

はい、彼らはあなたがここで求めているものであれば、同じソースファイルを使用してコンパイルします。

両方ともリソースファイルをコピーしますか?

はい、どちらもリソースファイルを別の場所にコピーします。

なぜ両方のオプションが必要なのですか?

両方のオプションは必要ありません。 Mavenコンパイルコマンドは、IntelliJのmakeオプションによって実行される作業を効果的にカバーする構文エラーがないかソースコードをチェックします。

intellijは依存関係を自動的にダウンロードし、mavenコンパイルを使用せずにプロジェクトmakeを呼び出すことができますか?

Intellijのコンパイラは構文コンパイラと見なすことができるため、プロジェクトの依存関係を処理するにはmavenが必要です。

27
Korhan Ozturk

いいえ、IntelliJはmavenを呼び出しませんが、pom.xmlからすべての情報を取得します。出力ディレクトリライブラリなど.

そのため、アプリケーションをコンパイルして実行するためにIntelliJからmakeを呼び出すことができます。 Mavenビルドファイルに特別な目標がある場合は、Mavenウィンドウから実行できます。

すべてのMaven依存関係はIntelliJからダウンロードされ、Mavenローカルリポジトリに保存されます。

3
chokdee

プロジェクトAを使用していると考えてみましょうMavenプロジェクトB

[〜#〜] b [〜#〜]プロジェクトを変更した場合、このプロジェクトを[〜#〜] a [〜#〜]で更新する必要があります。次に、A in Bをコンパイルする必要があります。

ただし、Aのみを変更した場合は、Mavenをコンパイルする必要はありません。

2
hurricane