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.

Generador de código como un complemento o dependencia de Gradle

He escrito un generador de código https://github.com/vjuge/cdmdsl que utiliza buildSrc de Gradle para generar código DSL en Kotlin, a partir de una biblioteca de modelos financieros llamada ‘CDM’ https://regnosys.jfrog.io/artifactory/libs-snapshot.

Está utilizando la capacidad de reflexión de Java para generar el DSL dinámicamente (el modelo cambia con frecuencia, se introducen nuevos tipos, propiedades se modifican/eliminan, etc.)

Funciona bien, por lo que podemos incluir este DSL para manipular el modelo fácilmente, desde dentro de cualquier aplicación basada en Java.

La desventaja actual es que necesito construir y desplegar regularmente versiones de mi DSL para seguir las versiones de CDM. Esto es un poco molesto y no sostenible.

Me pregunto si hay alguna manera de hacer que mi proyecto pueda construir “sobre la marcha”, como una dependencia:
1. Una aplicación implementaría dos dependencias: este DSL + librería CDM
2. La aplicación establecería la versión deseada de la dependencia CDM
3. El DSL se utilizaría como un complemento de Gradle para generar el código basado en la versión correspondiente de CDM en el momento de construcción de la aplicación.

¡Espero que mi descripción sea lo suficientemente clara!

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Propuesta de solución

    Para hacer que tu proyecto pueda construirse sobre la marcha, puedes utilizar la función de Plugins Personalizados de Gradle. Al descomponer tu proyecto en tareas más pequeñas y configurarlas para generar código en el momento de la construcción, puedes generar fácilmente el código DSL para la versión correspondiente de CDM basada en el tiempo de construcción de la aplicación.

    Aquí tienes los pasos que puedes seguir para lograr esto:

    1. Crea un plugin personalizado de Gradle en tu proyecto que genere el código DSL deseado basado en la versión de CDM especificada por la aplicación en el momento de la construcción.
    2. Configura la tarea del plugin personalizado para que se ejecute automáticamente cuando se construya la aplicación.

    3. Agrega el plugin personalizado como una dependencia en el archivo build.gradle de la aplicación.

    4. Especifica la versión de la biblioteca CDM que la aplicación necesita utilizar.

    5. Ejecuta el comando de construcción de la aplicación.

    6. La tarea del plugin personalizado se ejecuta, genera el código DSL basado en la versión de CDM especificada e lo incorpora en el código de la aplicación.

    Al seguir estos pasos, la aplicación generará dinámicamente el código DSL en el momento de la construcción basado en la versión de CDM especificada, sin necesidad de construir e implementar diferentes versiones del código DSL.

    Espero que esta solución te ayude a crear una forma sostenible y eficiente de gestionar tu código DSL.

Comments are closed.