如果我使用 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世界的习惯?
<小时/>注意,据我所知,这工作正常:
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) 您可以在project.clj 中指定:source-paths ["."]
。参见莱因sample project对于所有可能的选项
(2) 一旦您拥有 2 个命名空间并且另一个上有一个 require
,您就需要“深层”结构。请参阅here有关如何将命名空间映射到文件的说明。
关于clojure - leiningen 为什么要建立目录层次结构?我可以放弃它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13551123/