2010-08-29 16 views
20

sagen, ich erstelle ein Programm in Clojure und ich muss es an einen Client liefern. Der Client verfügt zwar über Computerkenntnisse, aber er weiß nicht/möchte den repl starten, mein Programm laden und ausführen. er möchte auf eine exe-Datei doppelklicken oder ein Shell-Skript ausführenAusführen eines Clojure-Programms

Wie verpacke ich mein Programm und liefere (das Programm selbst mit den Clojure-Gläsern)?

Antwort

22

Sie haben ein paar Möglichkeiten:

  • das Programm in Java-Klassen kompilieren und ein Hauptverfahren eine geben. Packe sie in ein ausführbares jar.
  • Wie oben, wenn Sie Leiningen verwenden, dann können Sie alles schön zusammenstellen mit lein uberjar, stellen Sie sicher, dass Sie eine Hauptklasse deklariert haben.
  • Sie können Ihr Projekt abwechselnd in eine nicht ausführbare JAR-Datei (keine Hauptklasse) packen und eine Shell-Skript-/Stapeldatei erstellen, um die richtige Klasse, z. java -cp ./clojure.jar:./myprogram.jar com.my.runthis.class
  • Packen Sie einfach Ihre .clj-Dateien in ein jar, und verwenden Sie ein Shell/Batch-Skript, um ein repl zu starten und dann automatisch Befehle z. java -cp ./clojure.jar:./myprogram.jar clojure.main -e "(in-ns 'your-ns)(start-your-program)" -r
+0

über die Parameter zu clojure.main: -e bedeutet ausführen? -r bedeutet was? wo kann ich über sie lesen? thx – Belun

+0

-e bedeutet werte -r bedeutet starten ein repl. Optionen sind unter http://clojure.org/repl_and_main beschrieben – Greg

8

einfachste Ansatz wäre Leiningen lassen Sie das Glas für Sie behandeln es wird alles in ein einziges Fett Glas, das ist alles, was Sie verpacken wie jede andere Java-Anwendung liefern müssen. Alles was der Kunde tun muss, ist einen Doppelklick darauf. Wenn Sie eine .exe-Datei benötigen launch4j kann es für Sie erstellen, kann es auch JRE-Installation verarbeiten, ist es nicht bereits auf dem Clientcomputer installiert. Sie brauchen keine Bash-Skripte etc.

6

Sie können leiningen verwenden, um Uberjar zu erstellen, wie Greg Harman schrieb ... Ich benutze Maven, um eigenständige Jar mit allen Abhängigkeiten zu erstellen, deklarieren Hauptklasse - dies zu vereinfachen mit dem Befehl 'java -jar your-jar-file'. Ich verwende auch Izpack, um Installationsprogramme für meine Programme zu erstellen

2

Der beste Ansatz, den ich dafür gefunden habe, ist cake bin, wenn Sie Kuchen verwenden. Es wird eine gepackte Binärdatei für Sie generieren (wahrscheinlich genauso wie oder ähnlich wie launch4j).

Verwandte Themen