0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

gradle + javaでgRPC

Last updated at Posted at 2024-12-21

gradle + javaでgRPC

実行環境
% gradle --version                                         

------------------------------------------------------------
Gradle 8.11
------------------------------------------------------------

Build time:    2024-11-11 13:58:01 UTC
Revision:      b2ef976169a05b3c76d04f0fa76a940859f96fa4

Kotlin:        2.0.20
Groovy:        3.0.22
Ant:           Apache Ant(TM) version 1.10.14 compiled on August 16 2023
Launcher JVM:  23.0.1 (Homebrew 23.0.1)
Daemon JVM:    /opt/homebrew/Cellar/openjdk/23.0.1/libexec/openjdk.jdk/Contents/Home (no JDK specified, using current Java home)
OS:            Mac OS X 13.2.1 aarch64

% javac --version 
javac 23.0.1
% java --version 
openjdk 23.0.1 2024-10-15
OpenJDK Runtime Environment (build 23.0.1+11-39)
OpenJDK 64-Bit Server VM (build 23.0.1+11-39, mixed mode, sharing)

gradleでprotoファイルをビルドして、interfaceを実装するためのメモです。

document:
https://grpc.io/docs/languages/java/quickstart/

project:
https://github.com/grpc/grpc-java/tree/v1.69.0/examples

$ git clone -b v1.69.0 --depth 1 https://github.com/grpc/grpc-java
$ cd grpc-java/examples

実行タスク一覧。

$ ./gradlew tasks --all

define proto

Write build.gradle

plugin

pluginはprotoやapplicationのビルドタスクを使用するために必要です。
./gradlew generateProtoでprotoをビルドしたり、./gradlew installDistでアプリをビルドしたりできます。

plugins {
    // Provide convenience executables for trying out the examples.
    id 'application'
    id 'com.google.protobuf' version '0.9.4'
    // Generate IntelliJ IDEA's .idea & .iml project files
    id 'idea'
}

パス指定

build.gradlesourceSetsにprotoの入出力パスを明記します。入力パスは明記しない場合、build.gradleファイルが配置されている階層の直下のパスsrc/main/protoがデフォルトのディレクトリパスとなります。*.protoファイルがビルド対象です。

sourceSets {
    main {
        java {
            srcDirs 'build/generated/source/proto/main/grpc'
            srcDirs 'build/generated/source/proto/main/java'
        }
    }
}
パスを変更したい場合

src/main/proto以外のパスをビルド対象としたい場合は次のように、proto{}にパスを指定します。

sourceSets {
    main {
        // protoファイルの配置ディレクトリ
        proto {
            srcDir 'src/main/protobuf'
        }
        java {
            srcDirs 'build/generated/source/proto/main/grpc'
            srcDirs 'build/generated/source/proto/main/java'
        }
    }
}

今回は次の*.protoファイルがビルド対象です。

% tree src/main/proto/
src/main/proto/
├── grpc
│   └── examples
│       └── echo
│           └── echo.proto
├── hello_streaming.proto
├── helloworld.proto
└── route_guide.proto

compile proto

pluginに'com.google.protobuf'を指定すれば、generateProtoタスクが有効になります。

examples % ./gradlew generateProto

'build/generated/source/proto/main/grpc'に生成されます。

BUILD SUCCESSFUL in 1s
3 actionable tasks: 3 up-to-date

Server/Client 実装

protoで指定した関数を実装します。今回は省略。

build for Application

実装したjavaファイルをビルドして実行していきます。

$ ./gradlew installDist

実行

server実行

$ ./build/install/examples/bin/hello-world-server

client実行

$ ./build/install/examples/bin/hello-world-client

参考

build.gradle::sourceSets

documents

grpc-java

gradle

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?