
Protocol Buffer generator enables serialization and deserialization across platforms, supporting GRPC, JSON format, and various data types. Integrates with kotlinx-serialization for efficient message handling.
Protocol Buffer generator for kotlin multiplatform or single platform.
plugins {
kotlin("jvm") version "1.9.23"
kotlin("plugin.serialization") version "1.9.23" //optional
id("com.google.protobuf") version "0.9.4"
}
sourceSets {
main {
proto {
srcDir(File(project.projectDir, "src/main/proto"))
}
}
}
protobuf {
plugins {
//If you want without kotlinx-serialization.
//id("kotlin-protobuf-kotlin") {
// artifact = "kr.jadekim:kotlin-protobuf-generator:$kotlinProtobufVersion"
//}
id("kotlin-protobuf-kotlinx") {
artifact = "kr.jadekim:kotlin-protobuf-generator-kotlinx:$kotlinProtobufVersion"
}
id("kotlin-protobuf-converter-jvm") {
artifact = "kr.jadekim:kotlin-protobuf-generator-converter-jvm:$kotlinProtobufVersion"
}
id("grpc") {
artifact = "io.grpc:protoc-gen-grpc-java:$grpcVersion"
}
id("kotlin-protobuf-grpc-jvm") {
artifact = "kr.jadekim:kotlin-protobuf-generator-grpc-jvm:$kotlinProtobufVersion"
}
}
generateProtoTasks {
all().forEach {
it.plugins {
id("kotlin-protobuf-kotlinx")
id("kotlin-protobuf-converter-jvm")
id("grpc")
id("kotlin-protobuf-grpc-jvm")
}
}
}
}
dependencies {
implementation("kr.jadekim:kotlin-protobuf:$kotlinProtobufVersion")
implementation("kr.jadekim:kotlin-protobuf-kotlinx:$kotlinProtobufVersion")
implementation("kr.jadekim:kotlin-protobuf-grpc:$kotlinProtobufVersion")
implementation("com.google.protobuf:protobuf-java:$protobufVersion")
implementation("io.grpc:grpc-protobuf:$grpcVersion")
implementation("io.grpc:grpc-stub:$grpcVersion")
implementation("io.grpc:grpc-kotlin-stub:$grpcKotlinVersion")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:$kotlinxSerializationVersion")
}
plugins {
kotlin("multiplatform") version "1.9.23"
kotlin("plugin.serialization") version "1.9.23" //optional
id("com.google.protobuf") version "0.9.4"
`java-library`
}
sourceSets {
main {
proto {
srcDir(File(project.projectDir, "src/main/proto"))
}
}
}
protobuf {
plugins {
//If you want without kotlinx-serialization.
//id("kotlin-protobuf-kotlin") {
// artifact = "kr.jadekim:kotlin-protobuf-generator:$kotlinProtobufVersion"
//}
id("kotlin-protobuf-kotlinx") {
artifact = "kr.jadekim:kotlin-protobuf-generator-kotlinx:$kotlinProtobufVersion"
}
id("kotlin-protobuf-converter-multiplatform") {
artifact = "kr.jadekim:kotlin-protobuf-generator-multiplatform:$kotlinProtobufVersion"
}
id("kotlin-protobuf-converter-multiplatform-jvm") {
artifact = "kr.jadekim:kotlin-protobuf-generator-multiplatform-jvm:$kotlinProtobufVersion"
}
id("grpc") {
artifact = "io.grpc:protoc-gen-grpc-java:$grpcVersion"
}
id("kotlin-protobuf-grpc-multiplatform") {
artifact = "kr.jadekim:kotlin-protobuf-generator-grpc-multiplatform:$kotlinProtobufVersion"
}
id("kotlin-protobuf-grpc-multiplatform-jvm") {
artifact = "kr.jadekim:kotlin-protobuf-generator-grpc-multiplatform-jvm:$kotlinProtobufVersion"
}
}
generateProtoTasks {
all().forEach {
it.plugins {
id("kotlin-protobuf-kotlinx")
id("kotlin-protobuf-converter-multiplatform")
id("kotlin-protobuf-converter-multiplatform-jvm")
id("grpc")
id("kotlin-protobuf-grpc-multiplatform")
id("kotlin-protobuf-grpc-multiplatform-jvm")
}
}
}
}
kotlin {
jvm {
withJava()
}
sourceSets {
val commonMain by getting {
kotlin.srcDir(File(buildDir, "generated/source/proto/main/kotlin-protobuf-kotlinx"))
kotlin.srcDir(File(buildDir, "generated/source/proto/main/kotlin-protobuf-converter-multiplatform"))
kotlin.srcDir(File(buildDir, "generated/source/proto/main/kotlin-protobuf-grpc-multiplatform"))
dependencies {
implementation("kr.jadekim:kotlin-protobuf:$kotlinProtobufVersion")
implementation("kr.jadekim:kotlin-protobuf-kotlinx:$kotlinProtobufVersion")
implementation("kr.jadekim:kotlin-protobuf-grpc:$kotlinProtobufVersion")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:$kotlinxSerializationVersion")
}
}
val jvmMain by getting {
kotlin.srcDir(File(buildDir, "generated/source/proto/main/java"))
kotlin.srcDir(File(buildDir, "generated/source/proto/main/grpc"))
kotlin.srcDir(File(buildDir, "generated/source/proto/main/kotlin-protobuf-converter-multiplatform-jvm"))
kotlin.srcDir(File(buildDir, "generated/source/proto/main/kotlin-protobuf-grpc-multiplatform-jvm"))
dependencies {
implementation("com.google.protobuf:protobuf-java:$protobufVersion")
implementation("io.grpc:grpc-protobuf:$grpcVersion")
implementation("io.grpc:grpc-stub:$grpcVersion")
implementation("io.grpc:grpc-kotlin-stub:$grpcKotlinVersion")
}
}
}
}
kotlin-protobuf.prefix=[some_prefix]
kotlin-protobuf.type_registry=[output class]
kotlin-protobuf.jvm_type_registry=[output class]
kotlin-protobuf.serializers_modules=[output class]
Option value can't have ','.
protobuf {
...
generateProtoTasks {
all().forEach {
it.plugins {
id(...) {
option("[option string]")
}
}
}
}
}
Protocol Buffer generator for kotlin multiplatform or single platform.
plugins {
kotlin("jvm") version "1.9.23"
kotlin("plugin.serialization") version "1.9.23" //optional
id("com.google.protobuf") version "0.9.4"
}
sourceSets {
main {
proto {
srcDir(File(project.projectDir, "src/main/proto"))
}
}
}
protobuf {
plugins {
//If you want without kotlinx-serialization.
//id("kotlin-protobuf-kotlin") {
// artifact = "kr.jadekim:kotlin-protobuf-generator:$kotlinProtobufVersion"
//}
id("kotlin-protobuf-kotlinx") {
artifact = "kr.jadekim:kotlin-protobuf-generator-kotlinx:$kotlinProtobufVersion"
}
id("kotlin-protobuf-converter-jvm") {
artifact = "kr.jadekim:kotlin-protobuf-generator-converter-jvm:$kotlinProtobufVersion"
}
id("grpc") {
artifact = "io.grpc:protoc-gen-grpc-java:$grpcVersion"
}
id("kotlin-protobuf-grpc-jvm") {
artifact = "kr.jadekim:kotlin-protobuf-generator-grpc-jvm:$kotlinProtobufVersion"
}
}
generateProtoTasks {
all().forEach {
it.plugins {
id("kotlin-protobuf-kotlinx")
id("kotlin-protobuf-converter-jvm")
id("grpc")
id("kotlin-protobuf-grpc-jvm")
}
}
}
}
dependencies {
implementation("kr.jadekim:kotlin-protobuf:$kotlinProtobufVersion")
implementation("kr.jadekim:kotlin-protobuf-kotlinx:$kotlinProtobufVersion")
implementation("kr.jadekim:kotlin-protobuf-grpc:$kotlinProtobufVersion")
implementation("com.google.protobuf:protobuf-java:$protobufVersion")
implementation("io.grpc:grpc-protobuf:$grpcVersion")
implementation("io.grpc:grpc-stub:$grpcVersion")
implementation("io.grpc:grpc-kotlin-stub:$grpcKotlinVersion")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:$kotlinxSerializationVersion")
}
plugins {
kotlin("multiplatform") version "1.9.23"
kotlin("plugin.serialization") version "1.9.23" //optional
id("com.google.protobuf") version "0.9.4"
`java-library`
}
sourceSets {
main {
proto {
srcDir(File(project.projectDir, "src/main/proto"))
}
}
}
protobuf {
plugins {
//If you want without kotlinx-serialization.
//id("kotlin-protobuf-kotlin") {
// artifact = "kr.jadekim:kotlin-protobuf-generator:$kotlinProtobufVersion"
//}
id("kotlin-protobuf-kotlinx") {
artifact = "kr.jadekim:kotlin-protobuf-generator-kotlinx:$kotlinProtobufVersion"
}
id("kotlin-protobuf-converter-multiplatform") {
artifact = "kr.jadekim:kotlin-protobuf-generator-multiplatform:$kotlinProtobufVersion"
}
id("kotlin-protobuf-converter-multiplatform-jvm") {
artifact = "kr.jadekim:kotlin-protobuf-generator-multiplatform-jvm:$kotlinProtobufVersion"
}
id("grpc") {
artifact = "io.grpc:protoc-gen-grpc-java:$grpcVersion"
}
id("kotlin-protobuf-grpc-multiplatform") {
artifact = "kr.jadekim:kotlin-protobuf-generator-grpc-multiplatform:$kotlinProtobufVersion"
}
id("kotlin-protobuf-grpc-multiplatform-jvm") {
artifact = "kr.jadekim:kotlin-protobuf-generator-grpc-multiplatform-jvm:$kotlinProtobufVersion"
}
}
generateProtoTasks {
all().forEach {
it.plugins {
id("kotlin-protobuf-kotlinx")
id("kotlin-protobuf-converter-multiplatform")
id("kotlin-protobuf-converter-multiplatform-jvm")
id("grpc")
id("kotlin-protobuf-grpc-multiplatform")
id("kotlin-protobuf-grpc-multiplatform-jvm")
}
}
}
}
kotlin {
jvm {
withJava()
}
sourceSets {
val commonMain by getting {
kotlin.srcDir(File(buildDir, "generated/source/proto/main/kotlin-protobuf-kotlinx"))
kotlin.srcDir(File(buildDir, "generated/source/proto/main/kotlin-protobuf-converter-multiplatform"))
kotlin.srcDir(File(buildDir, "generated/source/proto/main/kotlin-protobuf-grpc-multiplatform"))
dependencies {
implementation("kr.jadekim:kotlin-protobuf:$kotlinProtobufVersion")
implementation("kr.jadekim:kotlin-protobuf-kotlinx:$kotlinProtobufVersion")
implementation("kr.jadekim:kotlin-protobuf-grpc:$kotlinProtobufVersion")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-core:$kotlinxSerializationVersion")
}
}
val jvmMain by getting {
kotlin.srcDir(File(buildDir, "generated/source/proto/main/java"))
kotlin.srcDir(File(buildDir, "generated/source/proto/main/grpc"))
kotlin.srcDir(File(buildDir, "generated/source/proto/main/kotlin-protobuf-converter-multiplatform-jvm"))
kotlin.srcDir(File(buildDir, "generated/source/proto/main/kotlin-protobuf-grpc-multiplatform-jvm"))
dependencies {
implementation("com.google.protobuf:protobuf-java:$protobufVersion")
implementation("io.grpc:grpc-protobuf:$grpcVersion")
implementation("io.grpc:grpc-stub:$grpcVersion")
implementation("io.grpc:grpc-kotlin-stub:$grpcKotlinVersion")
}
}
}
}
kotlin-protobuf.prefix=[some_prefix]
kotlin-protobuf.type_registry=[output class]
kotlin-protobuf.jvm_type_registry=[output class]
kotlin-protobuf.serializers_modules=[output class]
Option value can't have ','.
protobuf {
...
generateProtoTasks {
all().forEach {
it.plugins {
id(...) {
option("[option string]")
}
}
}
}
}