我遵循grpc的这个教程,我的问题是当我运行“mvnprotobuf:compile“文件是在目标文件夹中生成的,我不知道如何将代码生成到java目录,这是我的pom文件
<dependencies>
<!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java-util -->
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java-util</artifactId>
<version>4.0.0-rc-2</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty-shaded</artifactId>
<version>1.33.1</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-protobuf</artifactId>
<version>1.33.1</version>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-stub</artifactId>
<version>1.33.1</version>
</dependency>
<dependency> <!-- necessary for Java 9+ -->
<groupId>org.apache.tomcat</groupId>
<artifactId>annotations-api</artifactId>
<version>6.0.53</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<extensions>
<extension>
<groupId>kr.motd.maven</groupId>
<artifactId>os-maven-plugin</artifactId>
<version>1.6.2</version>
</extension>
</extensions>
<plugins>
<plugin>
<groupId>org.xolstice.maven.plugins</groupId>
<artifactId>protobuf-maven-plugin</artifactId>
<version>0.6.1</version>
<configuration>
<protocArtifact>com.google.protobuf:protoc:3.12.0:exe:${os.detected.classifier}</protocArtifact>
<pluginId>grpc-java</pluginId>
<pluginArtifact>io.grpc:protoc-gen-grpc-java:1.33.1:exe:${os.detected.classifier}</pluginArtifact>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>compile-custom</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
这是我的原始文件,
这是我的问题,
1- The sources are generated in the target folder, I can import them just fine but why in Google docs it shows in the main/java/io..etc folder?
2- stubs like RouteGuideBlockingStub are not getting generated with mvn protobuf:compile, should I be using something else?
2条答案
按热度按时间mnemlml81#
生成的源代码并不是真正有用的,除非您希望将代码作为一个包含源代码的库分发。生成的类足以与grpc一起工作。项目建设速度更快。
protobuf-maven-plugin
可以配置为使用您选择的路径通过outputDirectory
在插件配置部分。只是不要把它们放进你的源文件夹。
protobuf:compile
只会得到protobuf定义。为了得到你需要的grpc存根compile-custom
生成中配置的目标。通常不需要单独调用它们,只需编译整个项目就可以了。
wb1gzix02#
正如在关于proto文件的目录结构限制的另一个答案中已经提到的,下面是应该如何配置pom.xml文件来编译生成的类并将其定位到java类文件中。
为了编译和生成必要的类文件,需要以下依赖项。
您还需要以下2个插件: