Gradle项目
使用java-gradle项目实现grpc-一元API
构建渐变
group="com.kaushik.grpc"version="1.0-SNAPSHOT">
apply plugin: 'java' apply plugin: 'com.google.protobuf' apply plugin: 'idea' buildscript { repositories { mavenCentral() } dependencies { classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.5' } } repositories { mavenCentral() } description = "gRPC Java Examples" dependencies { compile 'io.grpc:grpc-all:0.13.1' } protobuf { protoc { // The version of protoc must match protobuf-java. If you don't depend on // protobuf-java directly, you will be transitively depending on the // protobuf-java version that grpc depends on. artifact = "com.google.protobuf:protoc:3.0.0-beta-2" } plugins { grpc { artifact = 'io.grpc:protoc-gen-grpc-java:0.13.1' } } generateProtoTasks { all()*.plugins { grpc {} } } }
问候.原型
syntax = "proto3"; package greet; option java_package = "com.proto.greet"; option java_multiple_files = true; message Greeting { string first_name = 1; string last_name = 2; } message GreetRequest { Greeting greeting = 1; } message GreetResponse { string result = 1; } service GreetService { //unary rpc Greet(GreetRequest) returns (GreetResponse) {}; }
同时尝试扩展GreetServiceGrpc
import com.proto.greet.GreetServiceGrpc; public class GreetServiceImpl extends GreetServiceGrpc.GreetServiceImplBase{ }
无法解析符号GreetServiceImplBase。即使在生成路径中,也不存在具有GreetServiceImplBase的类。
GreetServiceImplBase是基于gradle文件中的配置(depedements,生成的源目录(生成的。渐变文件中的示例条目:
dependencies {
compile group: 'com.google.protobuf', name: 'protobuf-java', version: '3.6.1'
testCompile group: 'junit', name: 'junit', version: '4.12'
compile group: 'io.grpc', name: 'grpc-stub', version: '1.16.1'
compile group: 'io.grpc', name: 'grpc-protobuf', version: '1.16.1'
compile group: 'io.grpc', name: 'grpc-netty', version: '1.16.1'
compile "io.grpc:grpc-all:1.16.1"
compile group: 'com.github.os72', name: 'protoc-jar', version: '3.6.0'
compile group: 'org.projectlombok', name:'lombok', version: '1.18.4'
compile 'com.google.protobuf:protobuf-java-util:3.6.1'
}
sourceSets {
main {
java {
srcDirs = ["src/main/java/", "src/generated/main/grpc/", "src/generated/main/java/"]
}
}
test {
java {
srcDirs = ["src/test/"]
}
}
}
idea {
module {
sourceDirs += file("${projectDir}/src/generated/main/java");
sourceDirs += file("${projectDir}/src/generated/main/grpc");
}
}
clean {
delete "$projectDir/src/generated"
}
现在执行渐变任务"generateProto">