|
gRPCを使ったJavaアプリケーションを作るには、build.gradleのdependencies等を定義する。
gRPCを使う(および、protoファイルのビルドを行う)ために、build.gradleに以下のように設定する。
plugins {
id 'java'
id 'com.google.protobuf' version '0.9.4'
id 'io.github.goooler.shadow' version '8.1.8'
}
group = 'com.example.grpc'
repositories {
mavenCentral()
}
java {
toolchain {
languageVersion = JavaLanguageVersion.of(11)
}
}
def grpcVersion = '1.67.1'
def protobufVersion = '3.25.5'
def protocVersion = protobufVersion
dependencies {
implementation "io.grpc:grpc-protobuf:${grpcVersion}"
implementation "io.grpc:grpc-services:${grpcVersion}"
implementation "io.grpc:grpc-stub:${grpcVersion}"
compileOnly "org.apache.tomcat:annotations-api:6.0.53" // javax.annotation
implementation "com.google.protobuf:protobuf-java-util:${protobufVersion}"
runtimeOnly "io.grpc:grpc-netty-shaded:${grpcVersion}"
// testImplementation "io.grpc:grpc-testing:${grpcVersion}"
// testImplementation "io.grpc:grpc-inprocess:${grpcVersion}"
}
protobuf {
protoc { artifact = "com.google.protobuf:protoc:${protocVersion}" }
plugins {
grpc { artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}" }
}
generateProtoTasks {
all()*.plugins { grpc {} }
}
}
sourceSets {
main {
proto {
srcDir "${projectDir}/proto"
}
}
}
shadowJar {
archiveBaseName = 'grpc-example'
archiveClassifier = 'all'
mergeServiceFiles()
}
protobufタスクは、デフォルトではsrc/main/protoにあるprotoファイルがビルド対象になる。
別のディレクトリーを指定したいときは、sourceSetsのmain/protoを定義する。