Maven Update Project究竟在Eclipse中做了什么?
首先,我知道这个问题 ,但我对那里没有提供的细节感兴趣。
我看了一下m2eclipse的文档,发现它简直令人难以置信。 我能找到的唯一相关部分是
或者,您可以从项目弹出菜单中运行“Maven / Update project configuration”操作,该菜单配置为默认运行“process-resources”,也可以在同一首选项页面上更改。
但我无法确定Update project configuration
是否与Update project
相同。 我在浏览时发现的所有其他来源也没有提供任何细节。
回顾一下,我想知道的是:
-
Update project
是否运行任何Maven插件,如果是,哪些是默认设置? - 是否有效果不是Maven插件的结果,而是内部的Eclipse?
- 对项目结构有哪些修改? 例如,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
}
执行的不同任务摘要(非详尽无遗)
- 项目已刷新文件系统。 这类似于在eclipse中调用java项目上的refresh。
- 检查工作区中是否添加了其中一个依赖项。 您必须注意到maven依赖项本地项目文件夹。 Junit和其他东西将使用此function选择更改。
- 使用maven-core库构建maven项目模型。
- 生命周期映射刷新–M2Eclipse尝试将一些插件生命周期映射到eclipse操作。 有关更多信息, 请检查
- 最后,使用Eclipse构建机制构建项目
此外,它还在工作区中执行父pom存在的一些内容,这在此上下文中并不是非常重要。
更新项目配置主要与
- 添加Maven性质(.project文件中的org.eclipse.m2e.core.maven2Nature) – 在您的上下文中并不重要。 看到这个 。
- 根据
project.build.sourceEncoding
maven属性为项目设置默认字符集。 - Eclipse – 插件生命周期处理。 上面的第3点。