6

如果我用 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的一种习惯?


请注意,据我所知,这很好用:

项目.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") }
)

一.clj

(ns one
  (:use hiccup.core))

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

二.clj

(ns two 
  (:require one))

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

2 回答 2

4

(1) 你可以:source-paths ["."]在你的project.clj中指定。有关所有可能的选项,请参见 lein示例项目

(2) 一旦你有 2 个命名空间和另一个命名空间,你就需要“深度”结构require。有关名称空间如何映射到文件的说明,请参见此处。

于 2012-11-25T13:07:39.787 回答
0

默认src路径(深层结构)将源代码与配置分开。对于大型应用程序,您还可以按目录组织多个命名空间以便于导航。

如果一切都在根目录中,即使这个最初的 REST API 也会变得笨拙:

谢菲

于 2022-01-06T16:26:00.350 回答