2012-11-25 2 views
5

Wenn ich ein neues clojure Projekt mit Leiningen schaffen, macht es zu einem Verzeichnisbaum wie folgt:Warum macht Leiningen eine Verzeichnishierarchie? Kann ich darauf verzichten?

. 
|-- doc 
| `-- intro.md 
|-- project.clj 
|-- README.md 
|-- src 
| `-- hello_friend 
|  `-- core.clj 
`-- test 
    `-- hello_friend 
     `-- core_test.clj 

Oft alles, was ich will, ist eine einzige clojure Datei, und ich mag Leiningen verwenden Bibliotheken zu handhaben und einen Start repl.

Ich habe zwei Fragen bekommt:

(1) möglich ist, erhalten Leiningen richtig

. 
|-- project.clj 
`-- hello.clj 

, die ich lieber mit dieser Struktur würde stark zu arbeiten. (Eigentlich wäre es sogar besser, project.clj als Teil der Datei hello.clj zu haben)

(2) Gibt es einen guten Grund für die tiefe Verzeichnisstruktur? Oder ist es nur eine Gewohnheit aus Java-Land?


Hinweis, das funktioniert gut, soweit ich sehen kann:

project.clj

(defproject generic "0.0.0" 
    :dependencies 
    [[org.clojure/clojure "1.4.0"] 
    [hiccup "1.0.2"]] 
    :source-paths ["."] 
    :main two 

    :repl-options { :port 4001 :init (println "(-main) to run") } 
) 

one.clj

(ns one 
    (:use hiccup.core)) 

(def doom (html [:h1 "doom"])) 

zwei. clj

(ns two 
    (:require one)) 

(defn -main [] 
    (println one/doom)) 

Antwort

5

(1) Sie können :source-paths ["."] in Ihrem project.clj angeben. Sehen Sie lein sample project für alle möglichen Wahlen

(2) Sie benötigen die "tiefe" Struktur, sobald Sie 2 Namensräume und eine require s auf der anderen haben. Eine Erläuterung dazu, wie Namespaces Dateien zugeordnet sind, finden Sie unter here.

+0

(1) ist fantastisch, danke. aber siehe oben für (2). Sieht so aus, als ob es gut funktioniert. –

+0

@JohnLawrenceAspden, versuchen Sie Ihr Beispiel mit einem tieferen Namensraum. Ändern Sie beispielsweise "eins" in "foo.one". Im Moment bezieht sich der Namespace auf den Dateinamen, tiefere auf Verzeichnisse. – Jeremy

+0

@ JeremyHeiler es funktioniert gut, wenn ich es tue. –

Verwandte Themen