Maven Update Project究竟在Eclipse中做了什么?

时间:2017-03-02 11:28:14

标签: java eclipse maven m2eclipse

首先,我知道this question,但我对那里没有提供的细节感兴趣。

我查看了m2eclipse的文档,发现它令人不满意。我能找到的唯一相关部分是

  

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

但我无法确定>>> list(unique([u'nowplaying', u'PBS', u'PBS', u'nowplaying', u'job', u'debate', u'thenandnow'])) [u'nowplaying', u'PBS', u'job', u'debate', u'thenandnow'] 是否与Update project configuration相同。我在浏览时发现的所有其他来源也没有提供任何细节。

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

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

1 个答案:

答案 0 :(得分:5)

  

Update项目是否运行任何Maven插件,如果是,那么哪些是默认设置?

在更新项目期间,m2eclipse使用maven-core构建项目对象模型。具体而言,maven model builder用于构建项目模型。换句话说,它会导致依赖性解析,错误和警告通知。有关结果的更多信息,您可以查看org.apache.maven.project.ProjectBuildingResult

我认为它不会导致插件的运行。我粗略地看了一下phase 2,但没有启用更新,这是插件处理。

  

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

是。请参阅答案的结尾部分。

  

对项目结构有哪些修改?例如,Maven依赖项是否在本地复制?

如果在本地你的意思是,在eclipse工作区然后没有。 Maven Dependencies显示对本地存储库的引用,该存储库通常是/.m2/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项目的刷新。
  2. 检查工作区中是否添加了其中一个依赖项。您必须注意到maven依赖项本地项目文件夹。 Junit和其他东西会使用此功能选择更改。
  3. 使用maven-core库构建maven项目模型。
  4. 生命周期映射刷新--M2Eclipse尝试将一些插件生命周期映射到eclipse操作。有关详细信息,请check
  5. 最后,使用Eclipse构建机制构建项目
  6. 此外,它还会在工作区中显示父pom存在的一些内容,这在此上下文中并不是非常重要。

    更新项目配置与

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