Soy nuevo en Clojure pero lo estoy aprendiendo. Me gustaría saber la mejor manera de empaquetar y distribuir un programa Clojure a usuarios finales que no son necesariamente programadores. Sé que en Ruby puedes decirle a los usuarios que descarguen el programa con gem install [program name]
y luego ejecuten el comando que ejecuta el programa. ¿Cuál es el equivalente de los programas de Clojure?¿Cómo se distribuye un programa Clojure a los no programadores?
Respuesta
Yo uso Leiningen tiene un comando uberjar
para hacer archivos jar ejecutables independientes, que los usuarios pueden hacer doble clic. Ver: http://zef.me/2470/building-clojure-projects-with-leiningen
Clojars (http://clojars.org/) es el mayor repositorio de bibliotecas de Clojure que puedes encontrar.
Funciona perfectamente con los proyectos de Leiningen o cualquier otra herramienta de gestión de proyectos basada en Maven.
Clojars no proporciona una instalación/distribución para el mecanismo de los usuarios finales como se pide en la pregunta. – mac
Clojars es genial si está distribuyendo una biblioteca, pero no estoy seguro de si esa es la mejor opción para los usuarios finales.
Si ya está usando Maven, creo que la mejor opción es crear un uberjar que contenga todas las clases requeridas. Si desea que sea aún más amigable para el usuario final, puede crear un instalador desde este contenedor usando algo como IzPack. Recuerde que los programas Clojure son programas Java, por lo que todas las opciones de distribución para Java también son válidas para Clojure.
lein uberjar funciona muy bien para aplicaciones pequeñas en su mayoría Clojure, pero no escala cuando se utilizan muchas bibliotecas Java, incluidas las licencias necesarias, y otras cosas similares. Si utilizas el plugin Maven Clojure, puedes aprovechar el extenso y aterrador plugin de Maven para construir y la estructura final que posiblemente puedas necesitar.
o usted podría escribir un plugin Leiningen hacer algo similar. No estoy seguro si existe tal cosa.
- 1. ¿Cómo se distribuye Erlang?
- 2. ¿Cómo se distribuye el programa privado a más de 100 dispositivos?
- 3. ¿Cómo distribuye el método RunJar de Hadoop los archivos clase/jar a través de los nodos?
- 4. ¿Cómo se distribuye una aplicación .NET?
- 5. Explicando SVN a no programadores
- 6. Cómo cargar los recursos del programa en Clojure
- 7. Enseñando JavaScript a los programadores de Java
- 8. Mejorando mi primer programa Clojure
- 9. ¿El programa Clojure no sale cuando finaliza la última declaración?
- 10. ¿Qué IDE utilizan los programadores CLISP?
- 11. ¿Cómo se puede extender un protocolo Clojure a otro protocolo?
- 12. ¿Distribuye hilos Java en varios servidores?
- 13. programa Clojure leyendo su propio MANIFEST.MF
- 14. ¿Qué pasa con este programa de Clojure?
- 15. ¿Cómo hacer que los submódulos de Git sean más fáciles para los no programadores?
- 16. El mejor software de calculadora para ayudar a los programadores
- 17. ¿Cómo puedo ver cómo se distribuye una clase de C++ en la memoria con gdb?
- 18. ¿Cómo se construye un símbolo en clojure?
- 19. ¿Cómo se buscan los espacios de nombres de clojure?
- 20. ¿Por qué los programadores a veces se refieren a "C++/STL" como si fuera un idioma separado?
- 21. ¿Cómo se podría crear una Clojure Lint?
- 22. programadores Java EE no escriben en archivos
- 23. Dos preguntas para los programadores antiguos
- 24. ¿Cómo se diseña un programa funcional?
- 25. ¿Cómo se agregan los puntos de interrupción a un programa de Python en IDLE?
- 26. ¿Cómo se organizan los grandes proyectos de clojure?
- 27. ¿Cómo sobrevivieron los programadores Java antes de las anotaciones?
- 28. ¿Cómo hacen los programadores de Ruby la verificación de tipos?
- 29. Cómo hacer un divertido Meetup programación eficaz que beneficia tanto a los principiantes y los programadores avanzados
- 30. ¿Recomendarías vim/emacs para los programadores principiantes?
Aunque lein uberjar es ideal para cosas pequeñas, no es factible para proyectos más grandes, especialmente si se incluyen otras bibliotecas de Java de terceros. Los tarros no se pueden (necesariamente) expandir, combinar y volver a sacudir de forma segura. El orden es arbitrario en el caso de conflictos de ruta, los manifiestos pueden ser complicados (o imposibles) para fusionarse apropiadamente, etc. Por supuesto, comience con uberjar pero eventualmente puede salir de él. –
Dependiendo del nivel técnico de sus usuarios, Lein-tar también puede ser apropiado: https://github.com/technomancy/lein-tar aunque no hay nada como la comodidad de un uberjar si funciona para su proyecto. – technomancy