在Eclipse IDE中使用maven / m2e从.proto自动生成Java

对于我的团队,我想配置maven / eclipse构建以从*.proto文件(在使用gRPC的项目中)自动生成Java代码。 目前需要运行mvn generate-sourcemvn protobuf:compile (如插件使用页面 )。 或者什么是相同的添加运行配置来调用maven目标compile

每当Eclipse Maven项目刷新( Alt + F5 )或IDE重新启动时,项目都会重建,但不会出现在target/generated ,从而将项目变为红色。 因此需要生成并刷新项目( F5 )。 更新Eclipse需要在.clathpath文件中配置源文件夹。

据我所知,应该是m2e连接器,但我只能找到一个https://github.com/masterzen/m2e-protoc-connector,用于最早的Google s plugin com.google.protobuf.tools:maven-protoc-plugin ,甚至在https://github.com/grpc/grpc-java上都没有提到

我们使用完全引用/推荐

  org.xolstice.maven.plugins protobuf-maven-plugin 

那是:

    kr.motd.maven os-maven-plugin 1.4.1.Final     org.xolstice.maven.plugins protobuf-maven-plugin 0.5.0  com.google.protobuf:protoc:3.1.0:exe:${os.detected.classifier} grpc-java io.grpc:protoc-gen-grpc-java:1.0.1:exe:${os.detected.classifier}     compile compile-custom       

有关:

  • 链接到Eclipse中生成的Java protobuf代码
  • 看了这个,但是那个作者正在使用其他较旧的,现在不支持的插件: 由protobuf生成的代码引起的Eclipse构建循环(与Maven Project Builder相关)
    PPS插件https://github.com/igor-petruk/protobuf-maven-plugin但是有继续https://github.com/os72/protoc-jar-maven-plugin

我的团队使用com.github.os72:protoc-jar-maven-plugin来生成消息类,而不是使用org.xolstice.maven.plugins:protobuf-maven-plugin 。 我相信他们是相同的,因为他们似乎都在使用谷歌的工具。

我没有为这个插件使用任何m2e连接器( 编辑: protoc-jar-maven-plugin的m2e连接器与它捆绑在一起,所以不需要额外的安装,这就是为什么我似乎没有使用它,但在技术上我是,但这并不重要)。 遗憾的是.proto文件中的更改不会“自动”传播到生成的.java文件,您需要手动运行Maven或触发项目在Eclipse中构建(下面的说明),但幸运的是target/generated-sources文件不是消失或排空或任何奇怪的,如你所描述的。

如果要从.proto类重建.java文件而不使用命令行中的mvn clean compile ,则可以清理Eclipse项目。 项目→清除…→选择项目→选择构建选项(仅在未选中项目菜单中的“自动构建”时显示)。

我能够在最新的Eclipse Neon中做到这一点(它可能也适用于后来的版本,但我不确定)。

下面是我正在使用的POM。 我不认为它需要任何特殊的解释,我的解决方案是简单地使用与您使用的插件不同的插件。 (如果需要一些解释,我会很乐意提供它。)

  4.0.0 io.github.jacksonbailey protobuf-m2e-sample 0.1.0-SNAPSHOT   com.google.protobuf protobuf-java 3.1.0      com.github.os72 protoc-jar-maven-plugin 3.1.0.1   generate-sources  run   3.1.0  src/main/resources         

for protobuf-maven-plugin

感谢sergei-ivanov在https://github.com/xolstice/protobuf-maven-plugin/issues/16中的回答,提供了链接https://github.com/trustin/os-maven-plugin#issues-with- eclipse-m2e-or-other-ides :

需要下载os-maven-plugin-xxxFinal.jar(pomx.ml中的版本)并将其放入/plugins目录。

之后,Eclipse将在项目清理时生成源代码,包括在Maven -update项目之后…( Alt + F5 ),但不是在Project – > Build之后(或默认使用Build Build)。 同样在IDE启动时它将无法编译。

是的,那是不合逻辑的:

Project – Clean将生成并编译Java源代码

项目 – 建设不会。

PS提出错误507412