首先,我知道this question ,但我对此处未提供的详细信息感兴趣。
我查看了 m2eclipse 的文档并发现它的简洁性令人不满意。我能找到的唯一相关部分是
Alternatively you can run “Maven / Update project configuration” action from the project popup menu, which is configured to run “process-resources” by default and it can be also changed on the same preference page.
但我无法确定Update project configuration
是否与Update project
相同。我在四处浏览时发现的所有其他来源也没有提供任何详细信息。
回顾一下,我想知道的是:
Update project
是否运行任何 Maven 插件,如果是,运行哪些插件以及使用哪些默认设置?- 是否有效果不是 Maven 插件的结果,而是 Eclipse 的内部效果?
- 项目结构有哪些修改?例如,Maven 依赖是否复制到本地?
最佳答案
Does Update project run any Maven plugin and, if so, which ones and with which default settings?
在更新项目的过程中,m2eclipse使用maven-core构建项目对象模型。具体来说,maven model builder用于构建项目模型。换句话说,它会导致依赖项解析、错误和警告通知。有关结果的更多信息,您可以查看 org.apache.maven.project.ProjectBuildingResult
我不认为它会导致插件运行。我粗略地看了看phase 2虽然没有启用更新,但它会进行插件处理。
Are there effects which are not a result of a Maven plugin, but are internal to Eclipse?
是的。请参阅答案的结尾部分。
What are the modifications on the project structure? For instance, are Maven dependencies copied locally?
如果您的意思是在本地,那么在 eclipse 工作区中则没有。 Maven Dependencies 显示对本地存储库的引用,通常是/.m2/repository。 Repository也是根据Eclipse菜单“Windows->Preference->User Settings”的设置来解析的。
更多信息可以从以下source code开始(在 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
}
执行的不同任务的总结(不详尽)
- 项目已更新文件系统。这类似于在eclipse中对java项目调用refresh。
- 检查工作区中是否添加了依赖项之一。您一定已经注意到在 maven dependencies 本地项目文件夹下。 Junit 和其他东西将使用此功能选择更改。
- 使用 Maven 核心库构建 Maven 项目模型。
- Lifecycle mapping refresh - M2Eclipse 尝试将一些插件生命周期映射到 eclipse 操作。更多信息,check
- 最后,使用 Eclipse 构建机制构建项目
此外,它还会做一些在工作区中存在父 pom 的事情,这在这种情况下不是很重要。
更新项目配置主要与
有关- 添加 Maven 性质(.project 文件中的 org.eclipse.m2e.core.maven2Nature)——在您的上下文中并不重要。参见 this .
- 根据
project.build.sourceEncoding
maven 属性为您的项目设置默认字符集。 - Eclipse - 插件生命周期处理。以上第 3 点。
关于java - Maven Update Project 在 Eclipse 中到底做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42554213/