Maven Update Project在Eclipse中具体是做什么的?

18

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

我查看了m2eclipse的文档,发现它不够详细。唯一相关的部分是:

或者您可以从项目弹出菜单中运行“Maven / Update project configuration”操作,默认情况下配置为运行“process-resources”,并且可以在同一页上进行更改。

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

总之,我想知道以下内容:

  1. Update project是否运行任何Maven插件,如果是,则默认使用哪些插件和设置?
  2. 是否有不是由Maven插件产生的影响,而是Eclipse内部产生的?
  3. 对项目结构的修改是什么?例如,Maven依赖关系是否被本地复制?
1个回答

10
在更新项目期间,m2eclipse使用maven-core构建项目对象模型。具体而言,使用maven model builder来构建项目模型。换句话说,它会导致依赖关系的解析、错误和警告通知。有关结果的更多信息,您可以检查org.apache.maven.project.ProjectBuildingResult
我认为它不会导致插件运行。我粗略地看了一下,在进行更新时未启用phase 2,该阶段处理插件。
是的。请参见答案的最后部分。
例如,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自然(在.project文件中的org.eclipse.m2e.core.maven2Nature)-在您的情况下不重要。请参见this
  2. 根据project.build.sourceEncoding Maven属性为您的项目设置默认字符集。
  3. Eclipse-插件生命周期处理。上面的第3点。

1
谢谢,这是很有用的信息。如果我理解正确的话,源代码是唯一可用的全面参考资料? - burubum
1
是的,不幸的是它也不太易读 :( ,请勿冒犯贡献者。 - GauravJ
@GauravJ 谢谢你的分享。你是怎么知道这个的?有没有官方声明(在线可用)关于“更新项目”命令或“更新Maven项目”对话框?你能提供链接吗?(FYI,我找到的唯一记录出现在m2e文档中,但它完全不足(请参见eclipse.org/m2e/documentation/release-notes-15.html) - KiriSakow
3
我已经查看了源代码,但没有找到任何解释这个问题的文档。 - GauravJ
关于“3.使用maven-core库构建maven项目模型”:执行了Maven默认生命周期的哪个阶段? - user1364368
有人知道 IntelliJ IDEA 中 Maven 的“更新项目”按钮的等效功能吗? - that_developer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接