Generate Java code cho service contract trong gRPC sử dụng Ascopes Protocol Buffers Maven Plugin

Trong bài viết trước, mình đã giới thiệu với các bạn Maven Plugin https://github.com/xolstice/protobuf-maven-plugin để có thể generate Java code cho service contract trong gRPC. Hiện tại thì plugin này đã archive. Một plugin khác thay thế, cùng tên và được recommend bởi Maven plugin trên là https://github.com/ascopes/protobuf-maven-plugin. Trong bài viết này, mình sẽ hướng dẫn các bạn cách sử dụng Ascopes Protocol Buffers Maven Plugin để có thể generate Java code cho service contract trong gRPC các bạn nhé!

Mình cũng tạo mới một Maven project để làm ví dụ:

Ascopes Protocol Buffers Maven Plugin cũng sử dụng Protocol Buffer Compiler và plugin gRPC Java Codegen cho Protocol Buffer Compiler để generate các message và các service được định nghĩa trong tập tin .proto, tương tự như plugin https://github.com/xolstice/protobuf-maven-plugin đó các bạn! Chỉ có cách khai báo thì khác mà thôi!

Cụ thể thì mình có thể khai báo plugin này như sau:

Như các bạn thấy, trong phần cấu hình của Ascopes Protocol Buffers Maven Plugin, chúng ta sẽ khai báo phiên bản Protocol Buffer Compiler mà plugin này sẽ sử dụng, sử dụng thẻ <protocVersion>.

Thẻ <binaryMavenPlugin> thì dùng để khai báo sử dụng plugin gRPC Java Codegen. Ở đây, như các bạn thấy, mình đã khai báo một option là “@generated=omit”. Option này dùng để disable việc sử dụng annotation @Generated của dependency javax.annotation-api đó các bạn! Plugin gRPC Java Codegen sẽ sử dụng annotation @com.google.protobuf.Generated của thư viện protobuf-java để thay thế!

Ascopes Protocol Buffers Maven Plugin định nghĩa goal generate để thực hiện việc generate code đó các bạn!

Các bạn cũng cần phải khai báo một số dependency sau để code có thể compile được:

với grpc.version và protobuf-java.version có giá trị như sau:

Mặc định thì Ascopes Protocol Buffers Maven Plugin sẽ scan các tập tin .proto nằm trong thư mục /src/main/protobuf hoặc /src/main/proto để generate Java code cho service contract cho gRPC server. Để làm ví dụ cho bài viết này, mình cũng sẽ tạo một tập tin helloworld.proto nằm trong thư mục src/main/protobuf với nội dung đơn giản như sau:

Bây giờ, nếu các bạn chạy Maven Compile “mvn compile”, các bạn sẽ thấy Ascopes Protocol Buffers Maven Plugin generate các tập tin Java ở thư mục /target/generated-sources/protobuf như sau:

Như vậy chúng ta đã hoàn thành việc sử dụng Ascopes Protocol Buffers Maven Plugin để generate Java code cho service contract trong gRPC rồi đó các bạn!

Add Comment