我正在尝试使用 protobuf 生成 stub 。 我的 pom.xml 有以下代码
<plugin>
<groupId>com.github.os72</groupId>
<artifactId>protoc-jar-maven-plugin</artifactId>
<version>3.8.0</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<protocVersion>3.8.0</protocVersion>
<includeStdTypes>true</includeStdTypes>
<inputDirectories>
<include>src/main/proto</include>
</inputDirectories>
<outputTargets>
<outputTarget>
<type>java</type>
</outputTarget>
<outputTarget>
<type>grpc-java</type>
<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.24.0</pluginArtifact>
</outputTarget>
</outputTargets>
</configuration>
</execution>
</executions>
</plugin>
但是,它生成目标为Java1.8的源文件。
我正在将我的应用程序迁移到 Java 11,并在 pom.xml 文件中包含以下 jar:
<dependency>
<groupId>com.sun.activation</groupId>
<artifactId>javax.activation</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.activation-api</artifactId>
<version>1.3.2</version>
</dependency>
然而,maven protoc 插件生成带有注释 javax.annotation.Genelated 而不是 javax.annotation.api.Generate 的文件 Grpc.java
是否有其他方法可以生成目标版本为 JDK 11 的 java stub 。
最佳答案
如果您遵循grpc-java documentation ,它指导您使用:
<dependency> <!-- necessary for Java 9+ -->
<groupId>org.apache.tomcat</groupId>
<artifactId>annotations-api</artifactId>
<version>6.0.53</version>
<scope>provided</scope>
</dependency>
以前版本的示例使用了 javax.annotation:javax.annotation-api:1.2
,它确实有效,但由于许可原因,它被替换为 Tomcat。在您的 pom.xml 中,您似乎可能混淆了“激活”与“注释”,乍一看它们非常相似。
我不知道 javax.annotation.api.Generate
注释。我还没有看到任何真正的证据表明 javax.annotation.processing.Generate
是 javax.annotation.Generate
的适当替代品。
关于java - 如何使用 maven 从 Java target 11 的 protobuf 生成 java stub ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68257659/