如何使用maven从protobuf为java目标11生成java存根?

z9smfwbn  于 2021-08-25  发布在  Java
关注(0)|答案(1)|浏览(419)

我正在尝试使用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插件使用注解javax.annotation.generated而不是javax.annotation.api.generated生成文件grpc.java
有没有其他方法可以生成目标版本为JDK11的java存根。

slmsl1lt

slmsl1lt1#

如果您遵循grpc java文档,它会指示您使用:

<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 任何一个

相关问题