使用 Buildship 在 Eclipse 中找出导致工作区 refresh/rebuild 的更改资源

Find out what changed resources caused a workspace refresh/rebuild in Eclipse with Buildship

有没有办法从 Eclipse 平台或 Buildship 插件(甚至通过 Gradle API 本身)获得更详细的日志输出,了解导致项目重建的原因?

上下文:

我们目前正在从 Eclipse Mars(使用 Spring Gradle 插件) 迁移到 Eclipse Photon(使用 Gradle Buildship 插件)。我们在使用新版本时遇到的一个问题是每次打开 Eclipse 时都会重建大部分工作空间,这在大型项目中可能需要几分钟时间。 Refresh workspace on startup 在 Eclipse 首选项中被禁用。将 Max simultaneous project builds 设置为更高的值并将 Max iterations when building with cycles 设置为比默认值更低的值有助于通过加速初始重建来稍微缓解问题,但最终它只能解决实际问题。

我们在旧版本中没有这些问题,这种行为对我来说似乎很奇怪。在完全构建工作区、关闭 Eclipse 并重新打开它之后,我希望没有资源发生变化并且不需要重建。

虽然我们确实有很多自定义 Gradle 插件和任务,但没有 明显的 违规行为,例如生成源代码的任务。不过,我不想完全排除在评估 Gradle 项目时我们定制的东西弄乱文件的可能性。

因此,为什么要获得有关 IDE/plugin 认为项目需要重建的更多信息,我们将不胜感激,以获得领先优势。

到目前为止我发现的唯一设置是 eclipse.log.level,但它已经默认为 ALL

我最后添加了一个 .options 文件

org.eclipse.jdt.core/debug=true
org.eclipse.jdt.core/debug/javadelta=true

org.eclipse.core.resources/build/delta=true
org.eclipse.core.resources/refresh=true

到Eclipse的安装目录。然后我使用 -debug -consoleLog 参数启动了 Eclipse。基本上正如 .

中指出的那样

在我的案例中,通过跟踪插件进行的配置并没有真正奏效,因为没有创建日志输出。可能是我的问题。


控制台中生成的跟踪输出足以表明 .class 文件的 Gradle 输出目录与 Eclipse 预期的输出目录不匹配的问题,因此它可能将该文件夹视为另一堆资源。

它还显示每个项目的已解析 class路径在打开 Eclipse 后立即在每个项目上标记为已更改。还不确定第一个问题是否是第二个问题的原因。

关于启动 Eclipse 时不必要构建的主题:您可能需要更新到 Eclipse 2018-09(参见 https://www.eclipse.org/downloads/),其中包含与此相关的两个修复:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=536990 特定于 Eclipse Photon

https://bugs.eclipse.org/bugs/show_bug.cgi?id=525597 这是一个老问题,只出现在较大的工作空间(实际上伤害最大的地方)