visual studio microsoft español descargar community plugins clojure gradle leiningen

plugins - studio - ¿Cuál es la mejor manera de estructurar y construir aplicaciones Clojure con complementos?



visual studio installer (1)

En primer lugar, no parece que Leiningen sea compatible con una jerarquía de módulos como Maven. Los pagos son lo más cercano que tiene. Sin embargo, debería ser suficiente desarrollar una aplicación modular en Clojure.

Para la estructura del proyecto, tendría un proyecto API, un proyecto "central", los propios plugins y un proyecto de empaque separado. El núcleo y los complementos solo deberían depender de la API. Qué herramienta de compilación usas para crear el proyecto de embalaje depende de ti. Es probable que Gradle sea más eficaz en el manejo del embalaje, sin embargo, la funcionalidad de "pago y envío" que ofrece Leiningen podría facilitar el desarrollo del sistema en su conjunto.

Echaré un vistazo al código de Leiningen y Noir para descubrir cómo manejarlo de manera efectiva.

Para cargar dinámicamente los complementos, comenzaría por ver cómo Noir lo maneja en dos de sus archivos:

  • server.clj tiene carga de espacio de nombres para todos los archivos debajo de un espacio de nombres particular. Debajo del capó, usa tools.namespace , pero se puede ver fácilmente cómo se usa para require cada espacio de nombre bajo una base particular. Así es como Leiningen maneja las tareas personalizadas también: la definición base para la tarea debe estar en el espacio de nombres leiningen. $ Task.
  • core.clj tiene lo que usaría para el registro de complementos. En resumen, use un mapa debajo de un atom y agregue complementos a ese mapa. Aconsejaría envolver el registro con una macro para mantener su código más limpio.

Lo que enumeré arriba debería ser suficiente si no necesita manejar agregar complementos en tiempo de ejecución. Si no tiene todos los complementos en la ruta de clase durante la puesta en marcha, le recomendaría utilizar pomegranite para agregar entradas al classpath. Puedes ver un ejemplo en classpath.clj .

Creo (ver a continuación) que me gustaría estructurar un proyecto de Clojure como módulos múltiples, con dependencias ordenadas, al igual que Maven me deja hacer con proyectos de múltiples módulos .

Pero no puedo ver cómo hacerlo con Leiningen; todo lo que puedo ver es la corrección de checkouts descrita en las preguntas frecuentes que no parece ser tan poderosa.

¿Lein hará esto? ¿Debería usar Gradle en su lugar? ¿O no se necesita este tipo de cosas?

Un poco más de contexto: me pregunto cómo diseñar una aplicación modular que sea compatible con los complementos (lo que imagino significa que los archivos descargados en el classpath). Y me pregunto en qué medida puedo estructurar eso como core + plugins (estoy pensando que debería poder hacer algo con la carga dinámica del código de Clojure y no tener que ir con Java / OSGi). Así que supongo que la motivación principal para un solo proyecto proviene de querer empaquetar todo (los complementos principales + por defecto) como una sola mancha que es fácil para el usuario final, pero que también se puede dividir (y que se construye y probado en fragmentos, probando la independencia lógica de cada módulo). Más consejos generales sobre esto es bienvenido

Actualizar

Una posible solución que no se mencionó a continuación es el uso de un plugin Maven . Supongo que es compatible con todo lo que Maven hace, pero compila Clojure, por lo que funcionará con módulos anidados, etc.