2011-11-11 14 views
8

मेरी परियोजनाएं अभी भी एसबीटी 0.7.7 का उपयोग कर रही हैं और मुझे एसबीटी प्रॉम्प्ट से चलने वाले उपयोगिता वर्गों के लिए बहुत सुविधाजनक लगता है। मैं इसे उन गुणों के साथ भी जोड़ सकता हूं जो अलग-अलग बनाए जाते हैं - आम तौर पर पर्यावरण से संबंधित मानों के लिए जो मेजबान से मेजबान में बदलते हैं। यह project/build निर्देशिका के अंतर्गत अपने प्रोजेक्ट परिभाषा का एक उदाहरण है:एसबीटी 0.11 रन कार्य उदाहरणों की आवश्यकता

class MyProject(info: ProjectInfo) extends DefaultProject(info) { 
    //... 
    lazy val extraProps = new BasicEnvironment { 
    // use the project's Logger for any properties-related logging 
    def log = MyProject.this.log 
    def envBackingPath = path("paths.properties") 
    // define some properties that will go in paths.properties 
    lazy val inputFile = property[String] 
    } 

    lazy val myTask = task { args => 
    runTask(Some("foo.bar.MyTask"), 
     runClasspath, extraProps.inputFile.value :: args.toList).dependsOn(compile) 
     describedAs "my-task [options]" 
    } 
} 

मैं तो एसबीटी खोल के तहत my-task option1 option2 के रूप में मेरे काम का उपयोग कर सकते हैं।

मैं Tasks और TaskInputs और स्पष्ट रूप से मैं अभी भी कैसे क्या मैं 0.7.7 पर किया था पूरा करने के लिए पर संघर्ष कर रहा हूँ पर वर्गों सहित https://github.com/harrah/xsbt/wiki पर नए एसबीटी 0.11 प्रलेखन पढ़ा है।

ऐसा लगता है कि अतिरिक्त गुणों को आसानी से अलग environment.sbt प्रतिस्थापित किया जा सकता है, build.sbt में सेट होने से पहले कार्यों को project/build.scala में परिभाषित किया जाना चाहिए। ऐसा लगता है कि पूरा होने का समर्थन है, जो बहुत दिलचस्प लग रहा है।

इसके अलावा मैं कुछ हद तक अभिभूत हूं। मैं नए एसबीटी के साथ क्या किया है मैं कैसे पूरा करूं?

+0

मैं मदद करना चाहते हैं, लेकिन मैं एसबीटी 0.7.7 के बारे में विवरण याद नहीं है। मुझे आश्चर्य है कि क्या इस सवाल को एसबीटी 0.11 के बारे में कई आत्मनिर्भर प्रश्नों में विभाजित किया जा सकता है? –

+0

@ किपटनबारोस, निश्चित रूप से - चलिए मूल 'रनटास्क' से शुरू करते हैं जिसके लिए मैं एसबीटी खोल पर तर्क प्रदान कर सकता हूं। – huynhjl

+0

ऐसा लगता है कि एसबीटी का दस्तावेज वर्तमान में संशोधित हो रहा है। मुझे लगता है कि [इनपुट कार्य] पर "बेसिक इनपुट टास्क डेफिनिशन" अनुभाग (https://github.com/harrah/xsbt/wiki/Input-Tasks) विकी पेज वह है जिसे आप ढूंढ रहे हैं। –

उत्तर

3

आप इस प्रकार का कार्य परिभाषित कर सकते हैं: करने के लिए इस config जोड़ने

lazy val ExtraProps = config("extra-props") extend(Compile) 

:

val inputFile = SettingKey[String]("input-file", "input file description") 

तुम भी तरह एक नया विन्यास को परिभाषित कर सकते हैं:

val myTask = InputKey[Unit]("my-task") 

और अपनी सेटिंग अपनी परियोजना और इस कॉन्फ़िगरेशन के लिए सेटिंग सेट करने के लिए इसका उपयोग करें:

lazy val root = Project("root", file(".")).config(ExtraProps).settings(
    inputFile in ExtraProps := ... 
    ... 
    myTask in ExtraPops <<= inputTask { (argTask:TaskKey[Seq[String]]) => 
    (argTask, inputFile) map { (args:Seq[String], iFile[String]) => 
     ... 
    } 
    } 
).dependsOn(compile) 

तो अतिरिक्त रंगमंच की सामग्री के साथ अपने कार्य का शुभारंभ: मेरे कार्य

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