2011-12-12 7 views
8

के साथ एसबीटी-असेंबली स्थापित करना मैं स्टैंड-अलोन जार बनाने के लिए install sbt-assembly by following the instructions पर कोशिश कर रहा हूं जो स्केल इंस्टॉल किए बिना कंप्यूटर पर चला सकता है।sbt 0.11.2

अभी तक ये मेरे द्वारा उठाए गए कदम हैं।

मैं एक plugins.sbt फ़ाइल बनाई:

$ cat sbt/project/plugins.sbt 
addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.7.2") 

और मैं अपने build.sbt फ़ाइल की शुरुआत करने के लिए निम्न कहा:

$ head -n3 sbt/build.sbt 
import AssemblyKeys._ // put this at the top of the file 

seq(assemblySettings: _*) 

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

sbt/build.sbt:1: error: not found: value AssemblyKeys 
import AssemblyKeys._ 
+0

आपको कोई त्रुटि मिलती करें संदेश है कि प्लगइन डाउनलोड नहीं किया जा सकता है? – Christian

+0

@ क्रिस्टियन - नहीं, वास्तव में, मुझे ऐसा कोई संदेश नहीं मिलता है। मेरा मानना ​​है कि प्लगइन डाउनलोड किया जा रहा है। – dsg

+0

यह आपके ऊपर दिए गए बयान के साथ बिल्कुल काम करता है (मेरे पास अभी भी 'प्रोजेक्ट/प्लगइन्स/build.sbt' में प्लगइन है जिसे अब बहिष्कृत किया गया है, लेकिन मुझे संदेह है कि इससे कोई फर्क पड़ता है)। यदि आप 'sbt पुनः लोड क्लीन अपडेट' करते हैं तो क्या होता है, क्या यह प्लगइन डाउनलोड करता है? –

उत्तर

12
  1. बैश प्रॉम्प्ट पर

    $ sbt sbt-version

    टाइप करके सुनिश्चित करें कि आप एसबीटी संस्करण में कम से कम 0.11 चला रहे हैं।

  2. मालूम कि आपके पास प्लग-इन की स्थापना की फ़ाइल के रूप में निम्नानुसार हैं:

     
    $ cat sbt/project/plugins.sbt 
    
    addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.7.2") 
    
  3. अपने निर्माण फ़ाइल (build.sbt) सुनिश्चित इस तरह दिखेगा:

     
    import AssemblyKeys._ 
    
    seq(assemblySettings: _*) 
    
    name := "my_project" 
    
    version := "1.0" 
    
    scalaVersion := "2.9.1" 
    
    libraryDependencies ++= Seq(
        "org.scalatest" %% "scalatest" % "1.6.1" % "test", 
        "commons-lang" % "commons-lang" % "2.6" 
    ) 
    
    traceLevel in run := 0 
    
    fork in run := true 
    
    scalacOptions ++= Seq("-optimize") 
    
    // The following is the class that will run when the jar is compiled! 
    
    mainClass in assembly := Some("MyMain") 
    
+0

नौसिखिया प्रश्न के लिए खेद है, अगर मेरी परियोजना build.sbt का उपयोग नहीं करती है लेकिन बिल्ड से व्युत्पन्न विशेष वर्ग का उपयोग करती है (मुझे लगता है कि इसका एसबीटी.बिल्ड) है। मैं इसे वसा-जार में परिवर्तित करना चाहता हूं और मुझे निम्नलिखित विकल्पों को जोड़ने की आवश्यकता है जो मैं नमूना प्रोजेक्ट में देखता हूं - seq (webSettings: _ *) और assemblySettings। परियोजना यहां है - https://github.com/zcox/lift-jetty-fatjar – kirhgoff

1

आप build.sbt में प्लगइन सेटिंग्स आयात नहीं करना चाहिए (मूल विन्यास): 1) build.sbt एक सामान्य स्कैला स्रोत फ़ाइल नहीं है 2) प्लगइन सेटिंग्स पूर्व-आयातित हैं।

तो आप बस

seq(assemblySettings: _*) 

आयात के लिए आवश्यक हैं केवल जब तुम पूर्ण/विस्तारित निर्माण विन्यास का उपयोग करना चाहिए।

3

सुनिश्चित करें कि आपके पास कोई प्रोजेक्ट/प्लगइन्स फ़ोल्डर नहीं है। यह प्लगइन को काम करने से निर्दिष्ट करने के अन्य तंत्र को रोक सकता है।

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