更新项目是否运行任何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
}
执行的不同任务的摘要(并非详尽无遗)
- 相对于文件系统刷新项目。这类似于在 eclipse 中对 java 项目调用刷新。
- 检查是否已在工作区中添加了其中一个依赖项。您必须注意到在 maven 依赖项下本地项目文件夹。Junit和其他东西将使用此功能选择更改。
- 使用 maven-core 库构建 maven 项目模型。
- 生命周期映射刷新 - M2Eclipse 尝试将某些插件生命周期映射到 eclipse 操作。有关详细信息,请查看
- 最后,使用 Eclipse 构建机制构建项目
此外,它还在工作区中执行一些具有父 pom 存在的内容,这在此上下文中不是很重要。
更新 项目配置主要与
- 添加 Maven nature (org.eclipse.m2e.core.maven2Nature in .project file) - 在你的上下文中不重要。请参阅此内容。
- 根据 maven 属性为项目设置默认字符集。
project.build.sourceEncoding
- Eclipse - 插件生命周期处理。上文第3点。