java - Maven Update Project 在 Eclipse 中到底做了什么?

标签 java eclipse maven m2eclipse

首先,我知道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相同。我在四处浏览时发现的所有其他来源也没有提供任何详细信息。

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

  1. Update project 是否运行任何 Maven 插件,如果是,运行哪些插件以及使用哪些默认设置?
  2. 是否有效果不是 Maven 插件的结果,而是 Eclipse 的内部效果?
  3. 项目结构有哪些修改?例如,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  

}

执行的不同任务的总结(不详尽)

  1. 项目已更新文件系统。这类似于在eclipse中对java项目调用refresh。
  2. 检查工作区中是否添加了依赖项之一。您一定已经注意到在 maven dependencies 本地项目文件夹下。 Junit 和其他东西将使用此功能选择更改。
  3. 使用 Maven 核心库构建 Maven 项目模型。
  4. Lifecycle mapping refresh - M2Eclipse 尝试将一些插件生命周期映射到 eclipse 操作。更多信息,check
  5. 最后,使用 Eclipse 构建机制构建项目

此外,它还会做一些在工作区中存在父 pom 的事情,这在这种情况下不是很重要。

更新项目配置主要与

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

关于java - Maven Update Project 在 Eclipse 中到底做了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42554213/

相关文章:

java - 如何覆盖默认的 swagger-code-gen 服务实现?

java - 为最终程序获取 noClassDefFoundError

maven - 从 Maven 站点中删除关于链接

java - Eclipse - 我正在寻找 View 。显示今天修改的文件

java - IF_ICMPNE 是什么意思?

android - 屏幕截图错误 (Android)

c - 权限被拒绝 - 无法打开输出文件

java - 应用程序崩溃了几次但不是在 Debug模式下

java - 如何使用JSP/Servlet将文件上传到服务器?

java - 用于 Eclipse 的 Linux 或 Sublime Text 选项卡样式自动完成?