2012-11-25 16 views
5

, bir dizin ağacı şöyle yapar:Neden leiningen bir dizin hiyerarşisi yapıyor? Bununla konuşabilir miyim? Ben Leiningen ile yeni bir Clojure projesi oluşturursanız

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

, tek istediğim tek Clojure dosyasıdır ve ben kütüphaneleri işlemek için Leiningen kullanabilir ve başlatmak istiyor repl. Ben iki sorum var

:

(1) mı mümkündür Leiningen ben ölçüde tercih ediyorum bu yapının

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

ile düzgün çalışması için almak için. (Aslında, proj.clj'nin hello.clj dosyasının bir parçası olması daha iyi olurdu.)

(2) Derin dizin yapısı için iyi bir neden var mı? Yoksa sadece java-topraktan bir alışkanlık mı?


Not bu bildiğim kadarıyla gördüğünüz gibi çalışıyor:

project.clj

(ns one (:use hiccup.core)) (def doom (html [:h1 "doom"])) 

iki

one.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 two 
    (:require one)) 

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

cevap

5

(1) Eğer project.clj içinde :source-paths ["."] belirtebilirsiniz. Olası tüm seçenekler için lein sample project'a bakın

(2) Diğer tarafta 2 ad alanı ve bir require s olduğunda, "derin" yapıya ihtiyacınız vardır. Ad alanlarının dosyalara nasıl eşlendiğine ilişkin bir açıklama için bkz. here.

+0

(1) müthiş, teşekkür ederiz. ama yukarıdan bakın (2). İyi çalışıyor gibi görünüyor. –

+0

@JohnLawrenceAspden, Örneğini daha derin bir ad alanı ile deneyin. Örneğin, '' '' 'foo.one' 'ifadesini değiştirin. Şu anda isim alanı dosya adını, daha derinleri de dizinlere atıfta bulunmaktadır. – Jeremy

+0

@JeremyHeiler Yapıyorsam iyi çalışıyor. –

İlgili konular