web-dev-qa-db-ja.com

Maven Update ProjectはEclipseで正確に何をしますか?

まず第一に、私は この質問 を知っていますが、そこに提供されていない詳細に興味があります。

m2Eclipse のドキュメントを確認したところ、不十分であることがわかりました。私が見つけることができた唯一の関連部分は

あるいは、デフォルトで「process-resources」を実行するように設定されているプロジェクトポップアップメニューから「Maven/Update project configuration」アクションを実行でき、同じ設定ページで変更することもできます。

Update project configurationUpdate projectと同じであるかどうかはわかりませんでした。ブラウジング中に見つけた他のすべてのソースも詳細を提供していません。

要約すると、私が知りたいのは:

  1. Update projectはMavenプラグインを実行しますか?実行する場合、どのプラグインをどのデフォルト設定で実行しますか?
  2. Mavenプラグインの結果ではないがEclipseの内部にある影響はありますか?
  3. プロジェクト構造の変更は何ですか?たとえば、Mavenの依存関係はローカルにコピーされますか?
14
burubum

UpdateプロジェクトはMavenプラグインを実行しますか?実行する場合、どのプラグインをどのデフォルト設定で実行しますか?

更新プロジェクトの間、m2Eclipseはmaven-coreビルドプロジェクトオブジェクトモデルを使用します。具体的には、プロジェクトモデルの構築に maven model builder が使用されます。つまり、依存関係の解決、エラー、警告の通知につながります。結果の詳細については、org.Apache.maven.project.ProjectBuildingResultを確認してください。

プラグインが実行されるとは思いません。プラグイン処理を行う更新が有効になっていない間、私はざっくりとした外観と フェーズ2 を取りました。

Mavenプラグインの結果ではないがEclipseの内部にある影響はありますか?

はい。回答の最後のセクションをご覧ください。

プロジェクト構造の変更は何ですか?たとえば、Mavenの依存関係はローカルにコピーされますか?

ローカルで言うと、Eclipseワークスペースでは違います。 Mavenの依存関係は、通常は/.m2/repositoryであるローカルリポジトリへの参照を示します。リポジトリは、Eclipseメニューの「Windows-> Preference-> User Settings」の設定に基づいて解決されます。

詳細については、次の ソースコード (Eclipseでプロジェクトを更新するときに呼び出されるメソッドの1つ)から始めることができます。

public IStatus runInWorkspace(IProgressMonitor monitor) {
     ...... Unimportant stuff  

    MavenUpdateRequest request = new MavenUpdateRequest(projects, offline,forceUpdateDependencies);
    Map<String, IStatus> updateStatus = configurationManager.updateProjectConfiguration(request, updateConfiguration,
    cleanProjects, refreshFromLocal, monitor);


...... Unimportant stuff  

}

実行されたさまざまなタスクの要約(網羅的ではない)

  1. プロジェクトはファイルシステムに関して更新されます。これは、EclipseのJavaプロジェクトでリフレッシュを呼び出すのと同じです。
  2. ワークスペースに依存関係の1つが追加されているかどうかを確認してください。 Mavenの依存関係のローカルプロジェクトフォルダーに注意してください。 JUnitおよびその他のものは、この機能を使用して変更を選択します。
  3. Maven-coreライブラリを使用してmavenプロジェクトモデルをビルドします。
  4. ライフサイクルマッピングの更新-M2Eclipseは、プラグインライフサイクルの一部をEclipseアクションにマッピングしようとします。詳細については、 check
  5. 最後に、Eclipseビルドメカニズムを使用してプロジェクトをビルドします

さらに、このコンテキストではそれほど重要ではない、ワークスペース内の親pomの存在に関するいくつかのことも行います。

プロジェクト構成の更新は主に関連しています

  1. Mavenネイチャーの追加(.projectファイルのorg.Eclipse.m2e.core.maven2Nature)-コンテキストでは重要ではありません。 this を参照してください。
  2. project.build.sourceEncoding mavenプロパティに基づいて、プロジェクトのデフォルトの文字セットを設定します。
  3. Eclipse-プラグインのライフサイクル処理。上記のポイント3。
6
GauravJ