如果我遵循grpc-java自述文件中的说明并且使用了maven,则protobuf生成的文件将显示在target
目录中,并随后在类路径中供我扩展等。但是,当我使用gradle,生成的类将显示在build
目录中,并且不在类路径中。我是新手,所以我不太确定为什么它会表现得如此不同。
我的build.gradle文件
apply plugin: 'java'
apply plugin: 'com.google.protobuf'
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.5'
}
}
group 'co.example'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile 'io.grpc:grpc-netty-shaded:1.15.1'
compile 'io.grpc:grpc-protobuf:1.15.1'
compile 'io.grpc:grpc-stub:1.15.1'
testCompile group: 'junit', name: 'junit', version: '4.12'
}
protobuf {
protoc {
artifact = "com.google.protobuf:protoc:3.5.1-1"
}
//noinspection GroovyAssignabilityCheck
plugins {
grpc {
artifact = 'io.grpc:protoc-gen-grpc-java:1.15.1'
}
}
generateProtoTasks {
all()*.plugins {
grpc {}
}
}
}
答案 0 :(得分:0)
在您的proto
文件所在的项目中(例如,该项目不仅用于生成jar和发布它们)看起来像gradle(如果要使用生成的存根/服务器接口),那么您需要将generatedFilesBaseDir
添加到您的build.gradle
文件中:
protobuf {
generatedFilesBaseDir = "$projectDir/src/main/java/generated"
...
}
完成此操作后,存根应该位于您的类路径中。
public class SomeServer extends MyProtoClassGrpc.PDFExtractImplBase {}