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

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

我看了一下m2eclipse的文档,发现它简直令人难以置信。 我能找到的唯一相关部分是

或者,您可以从项目弹出菜单中运行“Maven / Update project configuration”操作,该菜单配置为默认运行“process-resources”,也可以在同一首选项页面上更改。

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

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

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

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

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

我认为它不会导致插件的运行。 我粗略地看了一下第2阶段,但没有启用更新,这是插件处理。

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

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

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

如果在本地你的意思是,在eclipse工作区然后没有。 Maven依赖关系显示对本地存储库的引用,该存储库通常是/.m2/repository。 还会根据Eclipse菜单“Windows->首选项 – >用户设置”的设置来解析存储库。

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

 public IStatus runInWorkspace(IProgressMonitor monitor) { ...... Unimportant stuff MavenUpdateRequest request = new MavenUpdateRequest(projects, offline,forceUpdateDependencies); Map updateStatus = configurationManager.updateProjectConfiguration(request, updateConfiguration, cleanProjects, refreshFromLocal, monitor); ...... Unimportant stuff 

}

执行的不同任务摘要(非详尽无遗)

  1. 项目已刷新文件系统。 这类似于在eclipse中调用java项目上的refresh。
  2. 检查工作区中是否添加了其中一个依赖项。 您必须注意到maven依赖项本地项目文件夹。 Junit和其他东西将使用此function选择更改。
  3. 使用maven-core库构建maven项目模型。
  4. 生命周期映射刷新–M2Eclipse尝试将一些插件生命周期映射到eclipse操作。 有关更多信息, 请检查
  5. 最后,使用Eclipse构建机制构建项目

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

更新项目配置主要与

  1. 添加Maven性质(.project文件中的org.eclipse.m2e.core.maven2Nature) – 在您的上下文中并不重要。 看到这个 。
  2. 根据project.build.sourceEncoding maven属性为项目设置默认字符集。
  3. Eclipse – 插件生命周期处理。 上面的第3点。