2013-02-07 35 views
5

हम एक ऐसे प्रोजेक्ट पर काम कर रहे हैं जिसमें कुछ क्लोजर-जावा इंटरऑप है। इस बिंदु पर हमारे पास एक एकल वर्ग है जिसमें विभिन्न निर्भरताएं हैं जिन्हें हमने विकास के लिए ग्रहण में उपयोगकर्ता पुस्तकालय में रखा है, लेकिन निश्चित रूप से यह Leiningen (2.x) का उपयोग करते समय मदद नहीं करता है। हमारी अधिकांश निर्भरता स्वामित्व हैं, इसलिए वे कहीं भी भंडार पर नहीं हैं।Leiningen के लिए आप मालिकाना निर्भरताओं को कैसे कॉन्फ़िगर करते हैं?

ऐसा करने का सबसे आसान/सही तरीका क्या है?

मैंने leiningen - how to add dependencies for local jars? देखा है, लेकिन ऐसा लगता है कि यह पुराना प्रतीत होता है?

अद्यतन: तो मैं अपने जार के लिए एक स्थानीय Maven भंडार निम्नलिखित these instructions और the lein deployment docs on github बनाया है, और इस तरह मेरी project.clj फ़ाइल संपादित:

:dependencies [[...] 
       [usc "0.1.0"]] 
:repositories {"usc" "file://maven_repository"} 

कहाँ maven_repository परियोजना निर्देशिका के अंतर्गत है (इसलिए नहीं file:/// का उपयोग कर)।

Retrieving usc/usc/0.1.0/usc-0.1.0.pom from usc 
Could not transfer artifact usc:usc:pom:0.1.0 from/to usc (file://maven_repository): no supported algorithms found 
This could be due to a typo in :dependencies or network issues. 
Could not resolve dependencies 

क्या मतलब है "कोई समर्थित एल्गोरिदम मिला" और मैं इसे कैसे ठीक है: - जब मैं "lein deps" भाग गया मैं इस संदेश को मिल गया?

अद्यतन 2: उत्तर here उत्तर का आखिरी बिट मिला।

उत्तर

1

उन्हें अपनी लीनिंग परियोजना के लिए निर्भरता के रूप में जोड़ें। आप नाम और संस्करण बना सकते हैं। फिर लीन डीपी चलाएं और त्रुटि संदेश जब इसे ढूंढने में विफल रहता है तो आपको चलाने के लिए सटीक कमांड मिल जाएगा ताकि आप अपने स्थानीय रेपो पर जार इंस्टॉल कर सकें, तो क्या आप एक साझा रेपो का उपयोग करने का निर्णय ले सकते हैं, आप इस प्रक्रिया का उपयोग कर सकते हैं वहां अपनी निर्भरताओं को रखने के लिए।

0

वाईएमएमवी लेकिन जब आप पॉलीग्लोट क्लोजर/जावा प्रोजेक्ट्स के साथ काम कर रहे हैं तो मुझे लीनिंगेन के बजाय मेवेन का उपयोग करना सबसे अच्छा लगता है।

यह मुख्य रूप से इसलिए है क्योंकि जावा आधारित उपकरण (ग्रहण इत्यादि) मेवेन परियोजनाओं को समझते हैं लेकिन लीनिंगेन परियोजनाओं को वास्तव में समझ में नहीं आता है। यह उत्कृष्ट काउंटरक्लॉक वार क्लोजर प्लगइन के साथ धीरे-धीरे बेहतर हो रहा है, लेकिन एकीकरण अभी भी एक कुशल आईडीई आधारित वर्कफ़्लो के लिए काफी अच्छा नहीं है।

चीजों के भंडार पक्ष पर, मैं एक निजी साझा मेवेन भंडार स्थापित करने का सुझाव देना चाहता हूं। यदि आप अपनी टीम के भीतर निर्भरताओं के जटिल सेट को प्रबंधित करने की योजना बना रहे हैं तो आपको इसे जल्द या बाद में आवश्यकता होगी: बुलेट को काटने और इसे अभी करने के लिए भी हो सकता है।

1

@ आर्थर का जवाब अच्छा है, लेकिन मुझे लगा कि मैं इसे और अधिक मांस दूंगा क्योंकि इससे कुछ विवरण कम हो जाते हैं।

  1. हमेशा ध्यान रखें Repeatability। यदि आप इसे नहीं बनाते हैं ताकि किसी भी व्यक्ति को कलाकृतियों तक पहुंच की आवश्यकता हो, तो कलाकृतियों को मानक तरीके से एक्सेस कर सकते हैं, आप नरक का समर्थन मांग रहे हैं।

  2. documentation on deployment आपकी कलाकृतियों को तैनात करने के बारे में जानने के लिए हर चीज को जानने के लिए एक अच्छी जगह है। चूंकि आप बहुभाषी वातावरण में हैं, इसलिए आपके पास lein आपके सभी कलाकृतियों को तैनात करने की देखभाल नहीं कर सकता है, लेकिन कम से कम आप अपने क्लोजर विशिष्ट जार को एस 3 में प्राप्त कर सकते हैं या यदि आप चाहें तो फ़ाइल साझा भी कर सकते हैं। आपके बाकी कलाकृतियों को फ़ाइल सर्वर या एस 3 पर मेवेन रेपो में कलाकृतियों को अपलोड करने के लिए सीधे मेवेन या चींट का उपयोग करना होगा।मेरी वर्तमान कंपनी में हम अपने बंद स्रोत कलाकृतियों और clojars को होस्ट करने के लिए उत्कृष्ट प्रभाव के लिए टेक्नोमेंसी के उत्कृष्ट s3 wagon private का उपयोग कर रहे हैं, जिसे हम खोल सकते हैं।

  3. क्या @ आर्थर का संदर्भ है lein install कर रहा है। जो कुछ करता है वह वर्तमान प्रोजेक्ट की एक प्रति आपके स्थानीय .m2 निर्देशिका में स्थापित करता है ताकि आपके बॉक्स पर अन्य प्रोजेक्ट उन्हें संदर्भित कर सकें। जब तक आप कॉन्फ़िगर कर लिया है अपने अपने .m2 फ़ोल्डर (शायद नहीं अपने वातावरण में एक बुरा विचार?) के लिए एक साझा निर्देशिका का उपयोग करने के लिए Maven के स्थापित करते हैं, इसका मतलब यह होगा कि जो अपनी परियोजना बाहर की जाँच करता है किसी और को यह का निर्माण करने में सक्षम नहीं होगा। यदि आप इस मार्ग पर जाना चाहते हैं, तो आपको अपने $M2_HOME/conf/settings.xml में साझा स्थान होने के लिए localRepository नोड सेट करने की आवश्यकता है, जिससे आपकी शेष टीम तक पहुंच हो। अधिक जानकारी के लिए the docs देखें।