2012-06-11 12 views
13

इसलिए अब तक मैं अपने स्कैला प्रोजेक्ट को एसबीटी (टाइपएफ़ स्टैक के माध्यम से) संकलित कर रहा हूं। मैं sbt-assembly के माध्यम से अब कई मशीनों में कोड चलाने के लिए चाहता हूं। निम्नलिखित दिशानिर्देशों में, मैंने केवल एक ही बदलाव किया है जो मेरी project/Build.scala फ़ाइल में था।एसबीटी-असेंबली काम कर रहे

resolvers += "Typesafe Releases" at "http://repo.typesafe.com/typesafe/releases", 
resolvers += "artifactory" at "http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases", 
libraryDependencies += "com.eed3si9n" % "sbt-assembly" % "0.8.3" 

जब मैं चलाने sbt compile हालांकि, मैं इस त्रुटि मिलती है:

sbt.ResolveException: unresolved dependency: com.eed3si9n#sbt-assembly/scala_2.9.1/sbt_0.11.2;0.8.3: not found यहाँ संबंधित हिस्सा है।

मैं क्या गलत कर रहा हूं?

धन्यवाद!

संपादित Build.scala को उसी फ़ोल्डर में एक build.sbt फ़ाइल बनाया गया (फ़ोल्डर /project/ है) और उस में इन दो पंक्तियों है:

Seq[Setting[_]](resolvers += "artifactory" at "http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases", 
       addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.8.3")) 

अब त्रुटि है:

[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] ::   UNRESOLVED DEPENDENCIES   :: 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] :: com.eed3si9n#sbt-assembly;0.8.3: not found 
[warn] :::::::::::::::::::::::::::::::::::::::::::::: 
[warn] 
[warn] Note: Some unresolved dependencies have extra attributes. Check that these dependencies exist with the requested attributes. 
[warn]  com.eed3si9n:sbt-assembly:0.8.3 (sbtVersion=0.11.2, scalaVersion=2.9.1) 
[warn] 
[error] {file:/Users/myname/current/projectname/project/}default-d7da9a/*:update: sbt.ResolveException: unresolved dependency: com.eed3si9n#sbt-assembly;0.8.3: not found 

EDIT 2 एचएम, सफल होने के बाद sbt compile, एस क्या मैं बस sbt कंसोल दर्ज करने में सक्षम हूं और assembly में टाइप कर सकता हूं?

> assembly 
[error] Not a valid command: assembly 
[error] Not a valid project ID: assembly 
[error] Not a valid configuration: assembly 
[error] Not a valid key: assembly 
[error] assembly 
[error] 

संपादित 3 जेके समझ में आ गया। GitHub README में निर्दिष्ट build.sbt जानकारी को जोड़ना था।

+0

"के रूप में जानकारी गिटहब रीडमे में निर्दिष्ट "- लिंक कृपया? – Vasily802

उत्तर

10

यहां दो अंक हैं। एक यह है कि एसबीटी प्लगइन्स लाइब्रेरी निर्भरता नहीं हैं - विशेष रूप से, वे मौजूदा एसबीटी संस्करण का उपयोग उसी तरह करते हैं जैसे अन्य स्कैला पुस्तकालय स्कैला संस्करण का उपयोग करते हैं। दूसरा यह है कि project/Build.scalaप्रोजेक्ट के लिए निर्भरताओं को प्रभावित करता है, के लिए नहीं।

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

अन्य मुद्दा संस्करण है। एसबीटी में एक उपयोगिता समारोह है जिसे addSbtPlugin कहा जाता है जो आपके लिए सब कुछ संभालता है। यह एक मॉड्यूलआईडी लेता है और सभी आवश्यक एसबीटी और स्कैला संस्करण जानकारी जोड़ता है।

तो, एसबीटी-विधानसभा एक पूर्ण निर्माण में काम पाने के लिए, तुम वहाँ project/ (पारंपरिक या तो project/build.sbt या project/plugins.sbt) के तहत में एक .sbt फ़ाइल बनाने और जगह अपने निर्माण के रिसोल्वर और निर्भरता:

resolvers += Resolver.url("artifactory", url("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns) 

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.8.3") 
+0

'addSbtPlugin' के तर्कों का प्रारूप क्या है? मैं एसबीटी-असेंबली के लिए क्या करूं? – adelbertc

+0

'addSbtPlugin (" com.eed3si9n "%" sbt-assembly "%" 0.8।3 ") ', इसलिए सेटिंग्स के साथ संबंधित आपके build.scala का हिस्सा इस तरह दिखना चाहिए: सेक [सेटिंग [_]] (संकल्प + = ..., संकल्प + = ..., addSbtPlugin (...)) ' –

+0

असल में, यह अचानक मेरे लिए होता है कि आप इसे गलत फ़ाइल में पूरी तरह से डाल सकते हैं। अगर यह प्रोजेक्ट/Build.scala है, तो उसे वहां डालने पर कोई अच्छा नहीं होगा (यह घोषणा करेगा कि आपका _ स्रोत code_ एसबीटी-असेंबली पर निर्भर करता है, प्रोजेक्ट नहीं)। प्रोजेक्ट का उपयोग करने के लिए, इसके लिए सेटिंग्स को प्रोजेक्ट/build.sbt या प्रोजेक्ट/प्रोजेक्ट/बिल्ड.scala (अधिमानतः पूर्व में रखें, क्योंकि लगभग कभी नहीं है प्रोजेक्ट के मेटा-बिल्ड के लिए पूर्ण निर्माण का उपयोग करने का कारण) –

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