java - 如何使用 maven 从 Java target 11 的 protobuf 生成 java stub ?

标签 java maven protocol-buffers

我正在尝试使用 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.Generatejavax.annotation.Generate 的适当替代品。

关于java - 如何使用 maven 从 Java target 11 的 protobuf 生成 java stub ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68257659/

相关文章:

java - 如何向后旋转数组元素

java - 无法将项目方面动态 Web 模块的版本更改为 3.1

java - Maven 发布插件。分支发布失败(+缺少分支名称的第一个字母)

c# - 使用 protogen 为每个文件输出一个 C# 类?

java - 如何在java中设置google protobuf重复字段

c++ - proto c++ 实现 - "marked ‘override’,但不会覆盖“错误

java - 如何从 Titan 中提供的属性/键获取顶点

java - 将base64编码的pdf转换为文件输入流,而不将文件写入系统

java - 无法将 BufferedReader.readLine() 的结果保存到 String

java - Hudson 不使用 Maven 生成的类路径?