leiningen为什么要创建目录层次结构?我可以免除吗?

时间:2012-11-25 12:43:00

标签: clojure leiningen

如果我使用leiningen创建一个新的clojure项目,它会像这样生成一个目录树:

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

通常,我想要的只是一个单独的clojure文件,我想使用leiningen来处理库并启动一个repl。

我有两个问题:

(1)是否有可能使leiningen与此结构一起正常工作

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

我更喜欢。 (实际上更好的方法是将project.clj作为hello.clj文件的一部分)

(2)深层目录结构有什么好的理由吗?或者它只是来自java-land的习惯?


请注意,就我所见,这样可以正常工作:

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"]))

two.clj

(ns two 
  (:require one))

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

1 个答案:

答案 0 :(得分:5)

(1)您可以在project.clj中指定:source-paths ["."]。有关所有可能的选项,请参阅lein sample project

(2)一旦你有2个名称空间和一个require s,你需要“深层”结构。有关名称空间如何映射到文件的说明,请参阅here