由 protobuf 生成的代码引起的 Eclipse 构建循环(与 Maven Project Builder 相关)
开发环境
我正在开发一个Maven Java客户端/服务器项目,该项目依赖于协议缓冲区(protobuf)在客户端和服务器之间发送RPC。我使用 Eclipse for Java EE 作为我的主要 IDE。由于我在我的项目中使用Maven,所以我正在使用Eclipse的m2eclipse插件。我在Eclipse中将我的项目配置为使用“Maven Nature”。
问题
基本上,使用上面描述的工作区设置,如果将Eclipse配置为“自动构建”(这是默认设置:项目菜单-->自动构建),我将遇到INFINITE BUILD LOOPS。每当 Eclipse 剥离构建时,构建版本将进入无限循环,这通常会导致 Eclipse 消耗我计算机的所有 CPU 资源,并且由于内存溢出,最终 IDE 中会出现一个错误弹出窗口。正在发生的事情是,从文件中生成的所有Java代码都是由Maven通过Eclipse构建的。一旦生成原型文件并将其编译到一个目录(在我的情况下,),原型文件的构建就会立即重复。即使我点击停止按钮,构建也会再次旋转。我真正停止无限构建循环的唯一方法是禁用“自动构建”。.proto
target/generated-sources
通过查看 Web 上的链接(请参阅此 SOF 文章,也在下面列出),一种解决方法是在我的 Eclipse 项目上禁用 Maven Project Builder。为此,我必须打开 Eclipse 项目设置 --> Builders -- >取消选择 Maven Project Builder。现在,无限构建循环不会发生,似乎是因为m2eclipse的构建者是罪魁祸首。但是,我现在从这个构建器中失去了许多有用的功能。也就是说,我无法通过m2eclipse利用自动资源处理,例如资源过滤。请注意,使用 Maven Nature 的项目在 Java 构建路径上排除了资源目录 ( 和 ),因为期望 Maven 项目生成器将它们添加到类路径中。因此,我在禁用 Maven Project Builder 时遇到的一个问题是,我无法在测试中从类路径中读取资源文件。我必须首先运行手动maven构建才能访问资源(但是一旦我刷新项目,我将无法再找到这些类路径资源)。或者,我可以更改项目的 Java Build Path,但这违背了 Maven Nature 的默认值,除了依赖于 protobuf 的项目之外,其他所有 Eclipse Java 项目都适用于我。src/main/resources
src/test/resources
所以,这一切都说...
有没有人知道我该如何解决这个问题?Eclipse平台似乎太成熟了,以至于这个问题继续存在。我总是可以提交一个会收集灰尘的Eclipse错误,但也许它不是Eclipse错误,而是我这边的错误配置。非常感谢您的帮助。
相关链接
- 关于这个问题的SOF帖子:Eclipse无休止地循环:调用“Maven Project Builder”
- 为 maven-protobuf-plugin 打开 Github 问题:https://github.com/igor-petruk/protobuf-maven-plugin/issues/16