Maven Update Project 在 Eclipse 中究竟做了什么?

2022-09-03 02:47:31

首先,我知道这个问题,但我对那里没有提供的细节感兴趣。

我看了一下m2eclipse的文档,发现它不令人满意的简洁。我能找到的唯一相关部分是

或者,您可以从项目弹出菜单中运行“Maven /更新项目配置”操作,该菜单默认配置为运行“进程资源”,也可以在同一首选项页面上进行更改。

但我无法确定是否与.我在浏览时发现的所有其他来源也没有提供任何细节。Update project configurationUpdate project

回顾一下,我想知道的是:

  1. 是否运行任何Maven插件,如果是,哪些插件以及使用哪些默认设置?Update project
  2. 是否有一些效果不是Maven插件的结果,而是Eclipse内部的?
  3. 对项目结构有哪些修改?例如,Maven 依赖项是否在本地复制?

答案 1

更新项目是否运行任何Maven插件,如果是,哪些插件以及哪些默认设置?

在更新项目期间,m2eclipse 使用 maven-core build project 对象模型。具体来说,maven 模型生成器用于构建项目模型。换句话说,它会导致依赖关系解决,错误和警告通知。有关结果的更多信息,您可以检查org.apache.maven.project.ProjectBuildingResult

我不认为这会导致插件的运行。我粗略地看了一下,在进行更新时未启用第2阶段,该阶段进行插件处理。

是否有一些效果不是Maven插件的结果,而是Eclipse内部的?

是的。请参阅答案的末尾部分。

对项目结构有哪些修改?例如,Maven 依赖项是否在本地复制?

如果本地的意思是,在eclipse工作区中,那么没有。Maven Dependencies 显示对本地存储库的引用,该存储库通常是 /.m2/repository。存储库也根据 Eclipse 菜单“Windows->Preference->User Settings” 的设置进行解析。

有关详细信息,您可以从以下源代码(在 eclipse 中更新项目时调用的方法之一)开始,

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. 检查是否已在工作区中添加了其中一个依赖项。您必须注意到在 maven 依赖项下本地项目文件夹。Junit和其他东西将使用此功能选择更改。
  3. 使用 maven-core 库构建 maven 项目模型。
  4. 生命周期映射刷新 - M2Eclipse 尝试将某些插件生命周期映射到 eclipse 操作。有关详细信息,请查看
  5. 最后,使用 Eclipse 构建机制构建项目

此外,它还在工作区中执行一些具有父 pom 存在的内容,这在此上下文中不是很重要。

更新 项目配置主要与

  1. 添加 Maven nature (org.eclipse.m2e.core.maven2Nature in .project file) - 在你的上下文中不重要。请参阅此内容
  2. 根据 maven 属性为项目设置默认字符集。project.build.sourceEncoding
  3. Eclipse - 插件生命周期处理。上文第3点。

答案 2

推荐