我正在现有的,相当普通的Maven 2项目中试验Protocol Buffers.目前,每次我需要更新生成的源时,都会调用shell脚本.这显然是一个麻烦,因为我希望在每次构建之前自动生成源.希望不要诉诸可耻的hackery.
所以,我的问题是双重的:
远射:是否有Maven 2的"Protocol Buffers插件"可以以自动方式实现上述目标?谷歌代码上有一个分支,其作者似乎已经开始实施这样的插件.不幸的是,它没有通过代码审查或合并到protobuf主干.因此,该插件的状态是未知的.
可能更现实:缺少一个实际的插件,我怎么可能protoc从我的Maven 2版本调用?我想我可以将现有的shell脚本连接到antrun调用或类似的东西.
个人经历非常感谢.
我正在开发一个Maven Java客户端/服务器项目,该项目依赖于Protocol Buffers(protobuf)在客户端和服务器之间发送RPC.我使用Eclipse for Java EE作为我的主IDE.由于我在项目中使用Maven,因此我使用Eclipse 的m2eclipse插件.我在Eclipse中配置我的项目以使用"Maven Nature".
基本上,通过上面描述的工作空间设置,如果Eclipse配置为自动构建(默认情况下为:项目菜单 - >自动构建),我将遇到INFINITE BUILD LOOPS.每当Eclipse旋转构建时,构建将进入无限循环,通常导致Eclipse消耗所有计算机的CPU资源,并且最终由于内存溢出而在IDE中出现错误弹出窗口.发生的事情是,.proto文件中生成的所有Java代码都是由Maven通过Eclipse构建不断构建的.一旦生成proto文件并将其编译到目录中(在我的例子中target/generated-sources),就会立即重复构建proto文件.即使我点击停止按钮,构建也会再次旋转.我能真正停止无限构建循环的唯一方法是自动禁用Build.
通过查看Web上的链接(请参阅此SOF帖子,也在下面列出),一种解决方法是在Eclipse项目中禁用Maven Project Builder.为此,我必须打开Eclipse项目设置 - >构建器 - >取消选择Maven Project Builder.现在,无限构建循环不会发生,似乎是因为m2eclipse的构建器是罪魁祸首.但是,我现在从此构建器中丢失了许多有用的功能.也就是说,我无法通过m2eclipse利用自动资源处理,例如资源过滤.请注意,使用Maven Nature的项目在Java Build Path中排除了资源目录(src/main/resources和src/test/resources),因为期望Maven Project Builder将它们添加到类路径中.因此,我在禁用Maven Project Builder时遇到的一个问题是我无法在测试中从类路径中读取资源文件.我必须首先运行一个手动maven构建来访问资源(但是一旦我刷新项目,我将无法再找到这些类路径资源).或者,我可以更改我的项目的Java Build Path,但这违背了Maven Nature的默认设置,除了依赖protobuf之外,它在所有Eclipse Java项目中都适用.
有谁知道如何解决这个问题?Eclipse平台似乎太成熟了,不能继续这个问题.我总是可以提交一个会收集灰尘的Eclipse bug,但也许它不是Eclipse的bug,而是我身边的错误配置.非常感谢您的帮助.