如何使用 Maven 从 protobuf 为 Java 目标 11 生成 java 存根?
How to generate java stubs from protobuf for Java target 11 using maven?
我正在尝试使用 protobuf 生成存根。
我的 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 插件生成的文件 Grpc.java 带有注释 javax.annotation.Generated 而不是 javax.annotation.api.Generated
是否有任何其他方法可以生成目标版本为 JDK 11.
的 java 存根
如果您遵循 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.Generated
注释。我还没有看到任何真正的证据表明 javax.annotation.processing.Generated
是 javax.annotation.Generated
的合适替代品。
我正在尝试使用 protobuf 生成存根。 我的 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 插件生成的文件 Grpc.java 带有注释 javax.annotation.Generated 而不是 javax.annotation.api.Generated
是否有任何其他方法可以生成目标版本为 JDK 11.
的 java 存根如果您遵循 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.Generated
注释。我还没有看到任何真正的证据表明 javax.annotation.processing.Generated
是 javax.annotation.Generated
的合适替代品。