clojure packaging

Ejecutando un programa de Clojure



packaging (4)

El enfoque más simple sería dejar que leiningen maneje el frasco por usted, ya que empaquetará todo en un solo frasco de grasa, eso es todo lo que necesita para entregar al igual que cualquier otra aplicación java. Todo lo que el cliente tiene que hacer es hacer doble clic en él. Si necesita un archivo .exe, launch4j puede crearlo por usted, también puede manejar la instalación de JRE si aún no está instalado en la máquina del cliente. No necesitas ningún script de bash, etc.

Digamos que creo un programa en clojure y tengo que entregarlo a un cliente. el cliente tiene algunos conocimientos de computación pero no sabe / quiere iniciar la respuesta, cargar mi programa y ejecutarlo. quiere hacer doble clic en un archivo exe o ejecutar un script de shell

¿Cómo empaqueto mi programa y lo entrego (el programa mismo con los frascos clojure)?


El mejor enfoque que he encontrado para hacer esto es un cake bin si estás usando pastel. Generará un binario empaquetado para usted (probablemente igual o similar a launch4j).


Puede usar leiningen para crear uberjar, como escribió Greg Harman ... Personalmente uso maven para crear archivos jar independientes con todas las dependencias, declarar clase principal: esto simplifica la ejecución con el comando ''java -jar your-jar-file''. También uso Izpack para crear instaladores para mis programas.


Tienes algunas opciones:

  • Compile el programa en clases de Java y asigne un método principal. Empaquetarlos en un tarro ejecutable.
  • De acuerdo con lo anterior, si usa Leiningen, puede ensamblar todo muy bien con lein uberjar , asegurándose de que haya declarado una clase principal.
  • Alternativamente, puede empaquetar su proyecto en un jar no ejecutable (sin clase principal) y crear un archivo de script / batch shell para ejecutar la clase adecuada, por ejemplo, java -cp ./clojure.jar:./myprogram.jar com.my.runthis.class
  • Simplemente empaquete sus archivos .clj en un jar, y use un script shell / batch para iniciar una respuesta y luego java -cp ./clojure.jar:./myprogram.jar clojure.main -e "(in-ns ''your-ns)(start-your-program)" -r automáticamente los comandos, por ejemplo, java -cp ./clojure.jar:./myprogram.jar clojure.main -e "(in-ns ''your-ns)(start-your-program)" -r