当前位置: 首页 > 知识库问答 >
问题:

Maven Update项目在Eclipse中到底做了什么?

孙嘉
2023-03-14

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

我看了一下m2eclipse的留档,发现它不令人满意地简洁。我能找到的唯一相关的部分是

或者,您可以从项目弹出菜单中运行“Maven/Update project configuration”操作,该菜单默认配置为运行“process resources”,也可以在相同的首选项页面上更改。

但我无法确定更新项目配置是否与更新项目相同。我在浏览时发现的所有其他来源也没有提供任何细节。

总结一下,我想知道的是:

  1. Update project是否运行任何Maven插件,如果是,哪些插件和默认设置?
  2. 是否有效果不是Maven插件的结果,而是Eclipse的内部效果?
  3. 项目结构上有哪些修改?例如,Maven依赖项是否在本地复制?

共有1个答案

涂选
2023-03-14

更新项目是否运行任何Maven插件,如果是,哪些插件以及使用哪些默认设置?

在更新项目期间,m2eclipse使用maven core构建项目对象模型。具体来说,maven model builder用于构建项目模型。换句话说,它会导致依赖项解析、错误和警告通知。有关结果的更多信息,请查看org。阿帕奇。专家项目ProjectBuildingResult

我不认为这会导致插件的运行。我粗略地看了一眼,第二阶段是更新未启用,这会进行插件处理。

是否存在不是Maven插件的结果,而是Eclipse内部的效果?

对请参见答案的结尾部分。

对项目结构的修改是什么?例如,Maven依赖项是本地复制的吗?

如果你说的本地是指在eclipse工作区中,那么no.Maven Dependencies会显示对本地存储库的引用,通常是/。m2/存储库。存储库也基于Eclipse菜单“Windows”的设置进行解析-

有关更多信息,可以从以下源代码开始(在eclipse中更新project时调用的方法之一),

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. 生命周期映射刷新——M2Eclipse尝试将一些插件生命周期映射到eclipse操作。有关更多信息,请查看
  5. 最后,使用Eclipse构建机制构建项目

此外,它还对工作区中的父pom存在做了一些处理,这在这种情况下并不重要。

更新项目配置主要与

  1. 添加Maven nature(org.eclipse.m2e.core.maven2Nature in.project文件)——在您的上下文中并不重要。看看这个
  2. 根据项目设置项目的默认字符集。建筑sourceEncodingmaven属性
  3. Eclipse——插件生命周期处理。上文第3点
 类似资料:
  • 问题内容: 首先,我知道这个问题,但是我对此处未提供的详细信息感兴趣。 我看了一下m2eclipse的文档,发现它简陋。我唯一可以找到的相关部分是 或者,您可以从项目弹出菜单中运行“ Maven / Update project configuration”操作,该操作默认配置为运行“ process-resources”,也可以在同一首选项页面上对其进行更改。 但是我无法确定是否与相同。我在浏览

  • “Maven”是什么意思-

  • 问题内容: “ Maven->更新项目… ”在Eclipse中做什么? 问题答案: 它将Eclipse项目设置与pom的设置同步。例如,如果您更改重要的插件设置(例如输出的Java版本),则会发现Eclipse将要求您更新项目,此后,项目中已配置的Java运行时将进行更改以反映您的Maven pom所指示的内容。 这是要记住的重要事项:Maven pom是这种项目设置的领导者。如果要更改设置,请尝

  • 问题内容: 连接到MySQL数据库时,请执行以下步骤 实际上,我想知道语句的作用。 虽然此类不在mysql.jar中。它在哪里? 问题答案: 本类位于java.lang包,因此在分布用java,并自动导入到每个班级。 该方法所做的只是返回由类加载器加载的参数对象。然后,该方法返回该类的新实例。 因此,发生什么情况是您称之为 返回com.mysql.jdbc.Driver.class。然后,您调用该

  • 问题内容: 解释了如何解决创建is 的问题。 本质上,有两种方法: 使用关键字: 使用关键字: 我正在尝试进行一些研究,以了解这两种方法之间的确切区别。该文档非常清楚有关使用: 为了在Objective-C中可访问和使用,Swift类必须是Objective-C类的后代,或者必须将其标记为。 但是,在任何地方我都找不到有关实际操作的信息。详细考虑整个概念,实际上并没有多大意义。我的理解是,这是Sw

  • 问题内容: IntelliJ IDEA 2016.3添加了将构建/运行委托给Gradle的功能。 很明显,当委托选项启用时,Gradle会执行所有操作。 我的问题是,关闭此选项时,IntelliJ到底在做什么? 我问这个问题是因为我的Gradle文件中有自定义代码,并且在IntelliJ中构建时似乎未执行此代码。当我运行时,一切正常。 问题答案: IntelliJ有自己的构建系统,称为JPS,它使