Protocol Buffers in Java class libraries: Understanding the Inner Workings of Kotlin Core
protobuf
syntax = "proto3";
message Person {
string name = 1;
int32 age = 2;
repeated string emails = 3;
}
gradle
plugins {
id 'com.google.protobuf' version '0.8.15'
}
protobuf {
protoc {
artifact = 'com.google.protobuf:protoc:3.17.2'
}
plugins {
grpc {
artifact = 'io.grpc:protoc-gen-grpc-java:1.38.1'
}
}
generateProtoTasks {
all()*.plugins {
grpc {}
}
}
}
sourceSets {
main {
java {
srcDirs += "${protobuf.generatedFilesBaseDir}/main/grpc"
srcDirs += "${protobuf.generatedFilesBaseDir}/main/java"
}
}
}
import com.example.PersonProto.Person;
public class Main {
public static void main(String[] args) {
Person person = Person.newBuilder()
.setName("Alice")
.setAge(25)
.addEmails("alice@example.com")
.addEmails("alice@gmail.com")
.build();
System.out.println(person.getName());
System.out.println(person.getAge());
System.out.println(person.getEmailsList());
}
}