Wenn Sie mit mehreren Clojure-Quelldateien als einzelnes Projekt arbeiten, können Sie mit einem Build-Tool wie Leiningen oder Boot viel Zeit sparen. Zum Beispiel könnten Sie hier ein einfaches Boot-Projekt namens myproject
mit mehreren Quelldateien erstellen.
Erstellen Sie zunächst ein myproject
Verzeichnis mit diesen Inhalten (es ist nicht, wo keine Rolle):
myproject
├── build.boot
└── src
└── myproject
├── bar.clj
└── foo.clj
Stiefel werden Ihre build.boot
-Datei ausführen, bevor er etwas anderes tut (zB einige Code ausgeführt wird, eine zu schaffen JAR oder Starten einer REPL). Vorerst alles was Sie brauchen Stiefel zu sagen ist, dass Ihre Quelldateien im src
Verzeichnis sein, so fügen Sie einfach diese Zeile build.boot
:
(set-env! :source-paths #{"src"})
In bar.clj
, legen Sie die Definition, die Sie von Ihrem anderen zugreifen möchten Code:
(ns myproject.foo
(:require [myproject.bar :as bar]))
(defn make-joke []
(println (Long/toString bar/base-13-joke 13)))
:
(ns myproject.bar)
(def base-13-joke 42)
Dann in foo.clj
Sie bar.clj
mit einer :require
Klausel in Ihrer ns
Erklärung verweisen können
Und das ist alles! Natürlich möchten Sie wahrscheinlich tatsächlich tun Zeug mit dem Code, den Sie gerade geschrieben haben. Boot behandelt "Dinge zu tun" durch Aufgaben. Lassen Sie uns eines schreiben, das einfach eine der Funktionen in Ihrem Projekt ausführt.
Wenn Sie eine Aufgabe definieren möchten, die mit Boot ausgeführt werden soll, können Sie den Code hinzufügen, um diese Aufgabe für Ihre build.boot
-Datei zu definieren. Zuerst müssen wir jedoch unseren Hauptcode aufrufen (in diesem Fall die make-joke
-Funktion im Namespace myproject.foo
). Diesen Code benötigen wir dann require
. Fügen Sie diese Zeile zu build.boot
:
(require '[myproject.foo :as foo])
Jetzt können wir eine einfache run
Aufgabe definieren (auch hier in build.boot
), die unsere Funktion ausgeführt wird:
(deftask run []
(with-pass-thru _
(foo/make-joke)))
Die with-pass-thru
Unternehmen haben gerade mit einigen zu tun von die Besonderheiten der Aufgaben in Boot, über die Sie im Detail lesen können here.
Die Ausführung von Aufgaben ist recht einfach. Führen Sie dies in der Befehlszeile von Ihrem Projektstamm:
$ boot run
33
Boot ist auch mit einigen Aufgaben eingebaut.
boot.user=>
Dieser Namespace ist das gleiche, in dem Stiefel führt das build.boot
Skript, so da haben wir ein require
: Zum Beispiel, wenn Sie boot repl
ausführen, werden Sie mit einer vertrauten REPL Aufforderung im boot.user
Namespace vorgestellt für myproject.foo
in build.boot
, können wir diesen Namespace in der REPL verwenden:
boot.user=> (foo/make-joke)
33
nil
natürlich können Sie require
anderen Namespaces zu:
boot.user=> (require '[myproject.bar :as bar])
nil
boot.user=> bar/base-13-joke
42
Es gibt eine ganze Menge mehr, die Sie mit dem Boot tun können, wie das Neuladen von Code und die Interaktion mit CIDER, über die Sie alles über die Boot Wiki lesen können.