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.

¿Los marshallers de Protobuf no se registran al usar Gradle?

Tengo un proyecto en el que estoy intentando hacer que protobuf funcione con infinispan, quarkus y gradle. El problema es que, aunque estoy siguiendo las instrucciones dadas en la página de inicio de Quarkus (https://quarkus.io/guides/infinispan-client), parece que cuando uso gradle, los generadores de marshallers no se generan y registran como deberían. Me parece que esto se debe a que el org.infinispan.protostream:protostream-processor no se ejecuta cuando gradle es la herramienta de compilación. ¿Es una decisión consciente que solo se admita Maven, o me estoy perdiendo algo evidente en mi configuración de gradle?

Se pueden encontrar réplicas de los casos más simples aquí: https://github.com/radiosphere/gradle-java-protobuf para gradle y aquí para maven: https://github.com/radiosphere/mvn-java-protobuf. Estos proyectos son extremadamente básicos, simplemente intentan ejecutar un código simple al iniciar:

    public void onStartup(@Observes StartupEvent startupEvent) {
        RemoteCache<string, counterstate=""> cache = cacheManager.administration().getOrCreateCache("default", DefaultTemplate.DIST_SYNC);

        cache.put("a", new CounterState(2L));
        CounterState state = cache.get("a");

        logger.infof("State: %s", state);
    }

En el proyecto de maven esto funciona, en el proyecto de gradle se genera una excepción que dice que no se puede encontrar ningún marshaller. A excepción de la elección de la herramienta de compilación, los proyectos deberían ser idénticos.</string,>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está con el org.infinispan.protostream:protostream-processor que no se ejecuta al usar Gradle en lugar de Maven. Aunque la documentación de Quarkus sugiere que los marshallers deben generarse y registrarse automáticamente, esto no parece ser el caso al utilizar Gradle como herramienta de compilación.

    No está claro si esta es una decisión consciente de admitir solo Maven o si puede haber algunas configuraciones faltantes en la configuración de Gradle. Para investigar el problema, el usuario ha creado dos proyectos idénticos en Github: uno con Gradle y otro con Maven. El código en estos proyectos es muy básico e intenta ejecutar un código simple al inicio. Mientras que el código funciona en el proyecto de Maven, el mismo código genera una excepción en el proyecto de Gradle diciendo que no se puede encontrar ningún marshaller.

    Como experto en IT especializado en protocol-buffers, Quarkus e Infinispan, la mejor opción sería investigar la configuración de ambos proyectos, especialmente el proyecto de Gradle. Puede ser necesario agregar dependencias o configuraciones adicionales específicas de Gradle para que el protostream-processor se ejecute y genere los marshallers requeridos. Alternativamente, puede ser necesario cambiar a Maven como herramienta de compilación si el problema no se puede resolver.

Comments are closed.