|
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を定義する。