es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El plugin de grpc kotlin no está generando código DSL.

Tengo un proyecto existente que utiliza gradle con kotlin DSL. He configurado la autogeneración de código protobuf con la construcción gradle.

El código Kotlin grpc se genera y puedo implementar mi servidor usando flujos y coroutines.

Pero el código Kotlin DSL no se está generando. Por lo tanto, actualmente me queda el uso de un patrón de construcción de objetos basado en boilerplate verboso para crear mis objetos.

A continuación se muestra la configuración de mi plugin protobuf.

protobuf {
protoc {
artifact = "com.google.protobuf:protoc:3.17.3"
}
plugins {
id("grpc") {
artifact = "io.grpc:protoc-gen-grpc-java:1.39.0"
}
id("grpc-kotlin") {
artifact = "io.grpc:protoc-gen-grpc-kotlin:1.2.0:jdk7@jar"
}
}
}
generateProtoTasks {
ofSourceSet("main").forEach {
it.plugins {
id("grpc") {}
id("grpc-kotlin") {}
}
}
}

¿Estoy omitiendo algo aquí?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Es posible que la generación de código de Kotlin DSL no esté habilitada en la configuración del complemento protobuf. Para habilitarlo, puedes agregar el complemento id("kotlin") a la sección de plugins y utilizarlo en el bloque generateProtoTasks de la siguiente manera:

    protobuf {
        // ...
        plugins {
            // ...
            id("kotlin") {
                // especifica la versión de Kotlin
                kotlin {
                    // utiliza la misma versión que la de tu tiempo de ejecución de Kotlin
                    // (por ejemplo, la versión especificada en el complemento Gradle Kotlin DSL)
                    // o cualquier otra versión compatible que prefieras
                    version = "1.5.31"
                }
            }
        }
        generateProtoTasks {
            ofSourceSet("main").forEach {
                // ...
                it.plugins {
                    // ...
                    id("kotlin") {
                        // genera código de Kotlin a partir de los archivos protobuf
                        // utilizando la opción "singleFile=true" para evitar la generación de
                        // archivos *_grpc_pb (ya que el complemento Kotlin DSL los genera de forma automática)
                        option("singleFile=true")
                    }
                }
            }
        }
    }
    

    Con esta configuración, el código de Kotlin DSL debería generarse junto con el código de grpc y podrás utilizarlo en la implementación de tu backend.

Comments are closed.