在Eclipse IDE中使用maven / m2e从.proto自动生成Java
对于我的团队,我想配置maven / eclipse构建以从*.proto
文件(在使用gRPC的项目中)自动生成Java代码。 目前需要运行mvn generate-source
或mvn 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中的版本)并将其放入
目录。
之后,Eclipse将在项目清理时生成源代码,包括在Maven -update项目之后…( Alt + F5 ),但不是在Project – > Build之后(或默认使用Build Build)。 同样在IDE启动时它将无法编译。
是的,那是不合逻辑的:
Project – Clean将生成并编译Java源代码
但
项目 – 建设不会。
PS提出错误507412