2012-11-25 10 views
5

अगर मैं 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 होना बेहतर होगा)

(2) क्या गहरी निर्देशिका संरचना के लिए कोई अच्छा कारण है? या यह सिर्फ जावा-भूमि से आदत है?


ध्यान दें, यह ठीक जहाँ तक मैं देख सकते हैं काम करता है:

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

दो। क्लोज

(ns two 
    (:require one)) 

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

उत्तर

5

(1) आप अपने project.clj में :source-paths ["."] निर्दिष्ट कर सकते हैं। सभी संभावित विकल्पों के लिए sample project देखें

(2) एक बार आपके पास 2 नामस्थान और एक require एस होने पर आपको "गहरी" संरचना की आवश्यकता है। here देखें कि नामों को फ़ाइलों में कैसे मैप किया गया है, इसकी व्याख्या के लिए।

+0

(1) भयानक है, धन्यवाद। लेकिन ऊपर देखें (2)। ऐसा लगता है कि यह ठीक काम करता है। –

+0

@ जॉन लोवरेंसस्पडन, एक गहरे नामस्थान के साथ अपना उदाहरण आज़माएं। उदाहरण के लिए, 'one' से' foo.one' में बदलें। अभी नामस्थान फ़ाइल नाम को संदर्भित करता है, गहरे लोग निर्देशिकाओं को भी संदर्भित करते हैं। – Jeremy

+0

@ जेरेमीहेइलर अगर मैं करता हूं तो यह ठीक काम करता है। –

संबंधित मुद्दे

 संबंधित मुद्दे