clojure - leiningen 为什么要建立目录层次结构?我可以放弃它吗?

标签 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世界的习惯?

<小时/>

注意,据我所知,这工作正常:

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/

相关文章:

clojure - Midje和Speclj如何比较?

Clojure:为什么会出现 StackOverflowError?

python - 有没有办法使用 Clojure 或 Lein 启动 Python 程序?

clojure - 检测leiningen测试模式

windows - 项目中的 Leiningen repl EOF 异常

xml - 使用 clojure xml zipper 返回多个值

java - 如何正确注释重载的 Java 方法?

build - Leiningen 在构建工作 uberjar 时遇到问题

java - 让 clojure 生成一个像构建器模式一样使用的 java 类

clojure - Lein uberjar 运行 repl,而不是我的应用程序