2012-09-23 9 views
8

Estoy un poco sorprendido por la gran cantidad de artículos/blogs/preguntas/respuestas sobre Clojure mencionando a Maven.¿Es Maven obligatorio para Clojure en la JVM?

En unos diez años trabajando como un desarrollador de Java, trabajando en tanto las aplicaciones de escritorio y aplicaciones web, he utilizado nunca Maven vez (por lo general -y eso es una opinión personal, pero sé que algunas personas piensan que el same-- los proyectos que he visto usando Maven incluían el "fregadero de la cocina" mientras que los que se construyeron con un proceso de construcción más "controlado" eran más "limpios" y producían frascos más pequeños, un tiempo de construcción más rápido, etc.).

¿Es necesario utilizar Maven cuando quiere construir una aplicación Clojure?

¿Es obligatorio utilizar Maven cuando quiere usar Leiningen? Por ejemplo, ¿puedo agregar tarros externos como dependencias a un proyecto de Leiningen "manualmente", sin necesidad de Maven?

Creo que mi pregunta se reduce a esto: ¿pueden ustedes, en el mundo de Clojure/JVM alejarse sin usar Maven, al igual que pueden construir, probar, empaquetar y enviar tanto aplicaciones de escritorio, webapps y Android de Java sin ¿Necesitas a Maven?

Respuesta

14

Respuesta corta: No. Clojure es solo un jar y puedes usarlo como "crudo" como quieras, como cualquier otra biblioteca de Java. respuesta

más larga: Maven no es un requisito, pero el utillaje alrededor de Clojure, especialmente Leiningen, es altamente Maven alineados para que su vida será más fácil si sólo se somete a la voluntad de Maven. Pero, con un poco de trabajo, no es tan difícil llevarse bien sin Maven. En el trabajo, utilizo una mezcla de Leiningen y nuestra infraestructura de construcción existente basada en Ant/Ivy. Utilizo Ant para resolver dependencias (de nuestro repositorio interno comisariado) y luego utilizo un truco de :resource-paths de Leiningen para que recoja los archivos no Maven. En algún momento haré un verdadero complemento para hacer estas cosas, pero hasta ahora ha funcionado bien para mí.

Además, si usted es una persona de Eclipse y utiliza CounterClockwise, puede tratar su proyecto como cualquier otro proyecto de Java en Eclipse, administrando el classpath manualmente. Simplemente sucede que también tienes código Clojure allí.

Por supuesto, el inconveniente en cualquier enfoque es que si desea tomar algo que está disponible desde Maven central o Clojars, tendrá que configurar algún tipo de espejo para su infraestructura, o manualmente desplegar el dependencias transitivas y agrégalos a tu proyecto.

+3

Leiningen utiliza maven bajo el capó, y la mayoría de las veces no tiene que saber o preocuparse de que esté allí. – Bill

+0

sí, pero supone que los artefactos están en un repositorio maven. –

+0

Es por eso que dije la mayoría del tiempo. :-) Además, por cierto, tienen un voto favorable. – Bill

6

No es necesario que use maven o leiningen, para el caso. Puede ejecutar el REPL clojure con

java -jar clojure-1.3.0.jar 

se ponga a funcionar muy bien. Sé de dónde vienes, porque hace un año, yo estaba en el mismo barco que tú. nunca usé maven, vi un par de proyectos menos que grandes que lo usaron mal, y en general desconfié de maven. Ant + ivy funciona muy bien, ¿quién necesita maven?

Como resultado del uso de leiningen, y comenzando un nuevo trabajo donde tenemos una configuración maven muy bien configurada, he cambiado mi canción por completo; Ahora creo que maven es genial, y lo prefiero mucho a la hormiga, que he usado durante mucho tiempo.

Específicamente con clojure, algunas ventajas de Leiningen son:

  • proyecto automagic andamios: "Lein nueva" pone en marcha un nuevo proyecto para usted. la convención es importante, ayuda a otros desarrolladores a entender su proyecto y rápidamente aumentarlo.
  • gestión de dependencias y complementos. agregar una dependencia es trivial, y no hay una gran manera que yo sepa de hacer una gestión de la dependencia no maven que esté estrechamente integrada con clojure.
  • "lein repl" establece su ruta de clases y todo correctamente, por lo que no tiene que jugar con eso, simplemente puede iniciar y ejecutar un REPL.
  • creación de artefactos: la construcción de un frasco de grasa (lein uberjar) es sencillo, y ya está configurado para usted.

Entonces, si bien es definitivamente posible usar clojure sin leiningen, sinceramente no veo por qué querrías. Hay muchas cosas agradables para que el desarrollo diario no lo use, en mi opinión.

4

con respecto a "¿Es obligatorio Maven cuando quiere usar Leiningen?"

Leiningen utiliza Maven y envuelve por lo que no puede realmente evitarlo, aunque que no siempre es necesario tocar cualquier XML

4

Maven no es obligatorio para Clojure como otros han señalado acertadamente.

Sin embargo, me gustaría animarlo a abrazar a Maven (ya sea directamente o vía leiningen). Tiene grandes ventajas en el mundo Clojure:

  • Va a ser más productivo en el largo plazo - una vez que lo tienes configurado, es bastante impresionante ver una construcción compleja, prueba y despliegue ejecutar en un solo comando. ¿Realmente desea configurar manualmente classpaths, descargar dependencias, incrementar números de versión, cargar en sitios FTP, etc.?
  • Una de las mayores ventajas de usar Clojure en la JVM es el acceso al ecosistema de la biblioteca de Java. Maven es la herramienta preferida para gestionar automáticamente las dependencias de las bibliotecas de Java. Casi todo lo que probablemente necesite estará en los repositorios de Maven Central o Clojars.
  • Clojure tiende a tener bibliotecas pequeñas enfocadas - esto es bueno porque son "simples" y puede escoger y elegir la funcionalidad que desee. Al mismo tiempo, también significa que es probable que tenga numéricamente más dependencias de biblioteca. Por lo tanto, un sistema de gestión de compilación será más útil.
  • Puede hacer que Maven construya como "pobre" como desee. Obviamente, puede obtener todas las dependencias bajo el sol, si así lo desea, pero también puede crear jarras muy delgadas excluyendo el cruft innecesario. Esa es tu elección.
  • Es el estándar de facto en el mundo de Clojure. Si nada más, usarlo significa que usted podrá colaborar con otros más fácilmente.

P.S. Al igual que usted, realmente no entendí el sentido de Maven hace 5 años. Luego lo probé y vi lo poderoso que podría ser para mi flujo de trabajo. Ahora soy un converso :-)

Cuestiones relacionadas