आप सीधे आरईपीएल पर हैक कर सकते हैं। मान लीजिए कि आपको अपने क्लासपाथ पर incanter मिल गया है। एक आरईपीएल शुरू करें। पहली चीज़ जो हमें करने की ज़रूरत है वह इसमें incanter कक्षाएं लाती है।
user> (require 'incanter.core)
nil
अब हम फ़ंक्शन incanter.core/matrix देख सकते हैं?
user> (incanter.core/matrix? 2)
false
हम मूल स्रोत कोड देख सकते हैं:
incanter.core नाम स्थान के लिए सबसे पहले परिवर्तन:
user> (in-ns 'incanter.core)
#<Namespace incanter.core>
user> (require 'clojure.repl)
nil
user> (clojure.repl/source incanter.core/matrix?)
(defn matrix?
" Test if obj is 'derived' incanter.Matrix."
([obj] (is-matrix obj)))
nil
के जाने के लिए और इसे पेंच चलो फिर हम पुराने स्रोत कोड का उपयोग पालना के रूप में कर सकते हैं:
incanter.core> (defn matrix? [obj] "hello")
#'incanter.core/matrix?
यूनिट टेस्ट:
incanter.core> (matrix? 2)
"hello"
वापस उपयोगकर्ता नाम स्थान में स्विच करें:
incanter.core> (in-ns 'user)
#<Namespace user>
इसे आजमाएं:
user> (matrix? 2)
; Evaluation aborted.
वहाँ उपयोगकर्ता/मैट्रिक्स का कोई परिभाषा है। हमने incanter.core नेमस्पेस में इसे फिर से परिभाषित किया।
user> (incanter.core/matrix? 2)
"hello"
repl पर प्रयोग के लिए, यह ठीक है बस स्रोत फ़ाइलों को बदलने के लिए और एकल फाइल (Emacs में सीसी सी) फिर से संकलन, या यदि आप सही नाम स्थान में हो, बस परिभाषा फिर से मूल्यांकन ।
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
अब, अगर हम अपने मूल्यवान परिवर्तन को स्थायी और अन्य परियोजनाओं के लिए उपलब्ध करना चाहते हैं, तो यह इस बात पर निर्भर करता है कि सब कुछ कैसे स्थापित किया जाता है।
मैं निर्भरता प्रबंधन के लिए मेवेन का उपयोग करता हूं, इसलिए यह स्रोत फ़ाइल को संशोधित करने का एक प्रश्न होगा, और फिर पुस्तकालय के लिए नए संस्करण को संकलित करने और इसे स्थानीय मैवेन भंडार में स्थापित करने के लिए बिल्ड प्रक्रिया को फिर से चलाएगा।
एक Maven परियोजना के साथ
, कि के रूप में
$ mvn install
संस्करण संख्याओं बारे में एक नोट के रूप में सरल किया जाना चाहिए:
आप स्थायी संशोधन करने और निर्भरता प्रबंधन का उपयोग मतभेद समन्वय करने के लिए करते हैं, तो आप चाहिए 1.2.0 से 1.2.0-जॉनशैक-स्नैपशॉट से, या किसी अन्य प्रोजेक्ट में एक अप्रत्याशित संस्करण का उपयोग करने के लिए वास्तविक चीज़ के साथ टकराव की संभावना नहीं है, जो आपकी लाइब्रेरी का संस्करण संख्या बदलें। आप एक संशोधित संस्करण नहीं चाहते हैं जो परियोजनाओं में अपना रास्ता ढूंढें जहां इसका स्वागत नहीं है।
तो क्या आप वाकई काट दिया संस्करण है जहाँ आप चाहते हैं, और अगली बार जब आप अपने repl शुरू का उपयोग करें कि, यह पिछले हैक है कि आप स्थापित में खींच चाहिए बनाने के लिए अपने स्वयं के परियोजना फ़ाइलों को संशोधित।
आप हर बार जब आप अपने परिवर्तनों को भंडार में अपना रास्ता बनाना चाहते फिर से पुनः स्थापित करने की आवश्यकता होगी, लेकिन यह वास्तव में शायद एक अच्छी बात है।
दुर्भाग्यवश, (और यह इस बिंदु पर था कि मैंने यह जानना शुरू किया कि मैंने एक अलग उदाहरण चुना है) इंकेंटर एक लीनिंगेन प्रोजेक्ट बन गया है जो एक विज्ञापन-स्क्रिप्ट के प्रकार में उप-मॉड्यूल में विभाजित है , इसलिए हमें यह पता लगाने की आवश्यकता है कि यह कैसे स्थापित होने की अपेक्षा करता है। Figuring बाहर काफी मुश्किल हो गया, हालांकि जवाब आसान है। Leiningen आग पर मेरे बाल सेट।
आप यहाँ incanter के स्रोत प्राप्त कर सकते हैं:
$ Git क्लोन http://github.com/liebke/incanter.git
और प्रासंगिक स्रोत फ़ाइल है:
~/incanter/मॉड्यूल/incanter कोर/src/incanter/कोर। clj
मैट्रिक्स को तोड़ने के लिए इसे संशोधित करें? समारोह, और उसके बाद यह पता चला है कि आप क्या करना है:
बदलें दोनों शीर्ष स्तर project.clj में संस्करण संख्या, और भी submodule project.clj में।
तो फिर तुम lein incanter कोर निर्देशिका में फिर से शीर्ष-स्तरीय निर्देशिका में स्थापित चला, और फिर, और तुम इसी क्रम में यह करने के लिए किया है। मुझे समझ में नहीं आता क्यों।
फिलहाल यह सब बेकार में जटिल लगता है। मैं (काफी) सुनिश्चित हूं कि यह उपकरण परिपक्व होने के रूप में बस जाएगा।
या Leiningen के साथ एक स्थानीय Maven भंडार – Greg
उपयोग करते हैं, इस का उपयोग करते हुए 'lein स्थापित' किया जा सकता है। – Mars