2011-12-06 4 views
5

मैंने एक प्रोजेक्ट डाउनलोड किया है जो एसबीटी का निर्माण प्रणाली के रूप में उपयोग करता है और मैं इसे बनाना चाहता हूं। आपको लगता है कि यह "एसबीटी" या कुछ टाइप करने जितना आसान होगा, लेकिन नहीं।मैं एक ऐसी परियोजना कैसे बना सकता हूं जो एसबीटी का निर्माण प्रणाली के रूप में उपयोग करे?

मैंने सोचा कि मैं इसके लिए एक प्रश्न जोड़ूंगा क्योंकि इसे अपने आप को समझने में सचमुच घंटे लग सकते हैं। मैं मजाक नहीं कर रहा हूं।

उत्तर

6

सबसे पहले, आप sbt-extras का उपयोग करना चाहेंगे, क्योंकि यह स्वचालित रूप से एसबीटी के सही संस्करण को डाउनलोड और उपयोग करता है। एसबीटी के गलत संस्करण का उपयोग करने की कोशिश कर रहा है (जिस परियोजना को आप बनाने की कोशिश कर रहे हैं उससे नया या पुराना कहता है) यह आवश्यक रूप से काम नहीं करेगा, और अजीब त्रुटियों का कारण बन सकता है।

भागो यह:

~/path/to/sbt-extras/sbt 

प्रतीक्षा इसे शुरू करने और सब कुछ डाउनलोड करने के लिए के लिए। यदि आपको प्रमाणीकृत प्रॉक्सी का उपयोग करने की आवश्यकता है, तो आपको प्रॉक्सी के लिए उपयोगकर्ता नाम और पासवर्ड निर्दिष्ट करने के लिए स्क्रिप्ट को संपादित करने की आवश्यकता होगी।

स्कैला के संस्करण की जांच करें कि सोचता है कि इसे (आउटपुट के अंत में, अगर सब कुछ काम करता है) के खिलाफ निर्माण करने की आवश्यकता है। यदि यह ठीक है, ठीक है, तो आपको कुछ भी करने की आवश्यकता नहीं है। यदि ऐसा नहीं है, आप अस्थायी रूप से एक संस्करण स्पष्ट रूप ++ के साथ, निर्दिष्ट कर सकते हैं जैसे:

++2.8.1 

(आप इस स्थायी बनाना चाहते हैं, तो आप का निर्माण परिभाषा फ़ाइलों को संपादित कर सकते हैं, लेकिन एक परिवर्तन कर के रूप में शामिल हैं जो संस्करण नियंत्रण के तहत फ़ाइलों के लिए, हो सकता है कि आप ऐसा नहीं करना चाहते हैं।)

अब, यदि आप एसबीटी के पुराने संस्करण का उपयोग कर रहे हैं, तो अगले चरण को न छोड़ें! यदि आप करते हैं तो आपको अजीब त्रुटियां मिल सकती हैं।

update 

अब आप का निर्माण और परीक्षण आप क्या निर्माण किया है सकते हैं:

test 

आपको एक त्रुटि "फ़ाइल नाम बहुत लंबा" मिलता है, यह एक एसबीटी विशेष समस्या नहीं है, यह एक स्केला समस्या है , जो अक्सर उबंटू उपयोगकर्ताओं को प्रभावित करता है (तकनीकी रूप से, अनबंटू उपयोगकर्ताओं के लिए यह आमतौर पर एनएनएफएस के साथ एन्क्रिप्टेड होम निर्देशिका से संबंधित है)। यदि आप Scala> = 2.9 का उपयोग कर रहे हैं, तो स्केलैक कमांड-लाइन विकल्प का उपयोग करने के लिए बिल्ड को संपादित करें जो आपको अधिकतम फ़ाइल नाम लंबाई निर्दिष्ट करने की अनुमति देता है। अन्यथा, यदि आप लिनक्स पर हैं, तो आप इन आदेशों को इन शेल प्रॉम्प्ट ( यूनिक्स पर CTRL + Z के साथ पृष्ठभूमि एसबीटी नहीं कर सकते हैं, क्योंकि इन आदेशों को चलाकर/dev/shm या/tmp पर पुनर्निर्देशित कर सकते हैं, क्योंकि यह हो सकता है ठीक से काम करना बंद करने के लिए) दिखाई देते हैं:

rm -rf target 
ln -s /dev/shm target 

(आप/परियोजना में इन आदेश पर अमल करना पड़ सकता है बजाय या रूप में अच्छी तरह का निर्माण)

वास्तव में, यह शायद बेहतर है, और भी अधिक सुरक्षित हो सकता है, के लिए।/dev/shm या/tmp की उपनिर्देशिका बनाएं और इसके बजाए इसका उपयोग करें।

संकलन परिणाम लक्ष्य में दिखाई देना चाहिए।फिर आप इसे चलाने के लिए चाहते हो सकता है यदि आप उसका चला सकते है: सब कुछ ठीक लग रहा है

run 

हैं, तो आप वैकल्पिक रूप से स्थानीय स्तर पर परिणाम प्रकाशित कर सकते हैं ताकि परिणाम तो अन्य एसबीटी द्वारा स्वचालित रूप से उठाया जा सकता है बनाता है:

publish-local 
+1

"फ़ाइल का नाम बहुत लंबा है": समाधान * * xmax-classfile-name' को 143 तक घटाएं, इसे बढ़ाने के लिए नहीं, जैसा कि मैंने शुरू में सोचा था। ऐसा इसलिए है क्योंकि [ecryptfs उस समय से अधिक फ़ाइल नामों को संभाल नहीं सकता है] (https://bugs.launchpad.net/ecryptfs/+bug/344878)। – cberzan

+1

यदि आप एन्क्रिप्टेड होम निर्देशिका का उपयोग कर रहे हैं, तो एक आसान समाधान है कि आपकी लक्षित निर्देशिका को एन्क्रिप्टेड निर्देशिका के बाहर निर्देशिका में लिंक करना है उदाहरण: ln -s/tmp target – Jack

3

मुझे नहीं लगता कि मैं इसे बेहतर समझा सकता हूं कि Getting Started Guide हो सकता है। कृपया इसे पहले 6 हिस्सों को पढ़ें, जो इसे पाने और चलाने के लिए बहुत लंबा समय नहीं होना चाहिए।

+0

दुर्भाग्यवश प्रारंभ करना मार्गदर्शिका वर्तमान में उन लोगों पर लक्षित है जो सीखना चाहते हैं अपने स्वयं के एसबीटी-आधारित परियोजनाओं को बनाने के लिए एसबीटी का उपयोग कैसे करें, व्यस्त लोगों को नहीं जो सिर्फ मौजूदा एसबीटी-आधारित परियोजना को मानवीय रूप से संभव बनाना चाहते हैं। –

+0

वैसे मुझे लगता है कि भाग 5, ** चल रहा है **, एसबीटी-आधारित परियोजनाओं को चलाने के लिए काफी अच्छी तरह से बताता है :) – uzilan

+0

यह मेरे जवाब में उल्लेख की गई किसी भी चीज का उल्लेख करता है! और यह विकी-आधारित है इसलिए यह पता लगाना मुश्किल है कि आप किस विकी पेज को एसबीटी के संस्करण के लिए देखना चाहिए जिसे आप उपयोग करने का प्रयास कर रहे हैं! अरे! एसबीटी दस्तावेज मुझे पागल ड्राइव! –

6

tl; डॉ:

sbt compile 

आप इसे चलाना चाहते हैं:

sbt run 

क्या अन्य लक्ष्यों उपलब्ध हैं देखने के लिए:

sbt tasks 

कुछ प्राप्त करने के लिए (अन्य) मदद, लेकिन अधिकतर sbt कंसोल से टाइप किए गए आदेशों पर लक्षित (यानी, sbt पर समानता के बिना चल रहा है टियर):

sbt help 

यह सब एसबीटी संस्करण> = 0.10.0 मानता है। एसबीटी का कौन सा संस्करण उपयोग में है देखने के लिए, कार्य करें:

grep sbt.version project/build.properties 

ऐसी कोई फाइल नहीं है, और आधार निर्देशिका (नहीं परियोजना निर्देशिका) पर एक्सटेंशन ".sbt" के साथ एक फ़ाइल नहीं है, तो यह है> = 0.10.0। बेशक, अगर grep काम करता है, तो यह आपको संस्करण बताएगा।

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