2012-08-15 10 views
9

मैं एसबीटी 0.12.0 का उपयोग कर रहा हूं।कार्य को एसबीटी 0.12 में किसी अन्य पर निर्भर कैसे करें?

मैं दो कार्यों है में मेरी project/Build.scala - helloTask और u2 इस प्रकार के रूप में परिभाषित:

val hello = TaskKey[Unit]("hello", "Prints 'Hello World'") 

val helloTask = hello := { 
    println("Hello World") 
} 

val u2Task = TaskKey[Unit]("u2") := { println("u2") } 

कैसे बनाने के लिए u2 कार्य hellotask पर निर्भर करते हैं? Tasks में वर्णित नमूना के बाद मैंने <<= का उपयोग किया (प्रश्न के मूल संस्करण में यह https://github.com/harrah/xsbt/wiki/Tasks था, लेकिन दस्तावेज़ तब से स्थानांतरित हो गया है और बदल गया है)।

u2Task <<= u2Task dependsOn helloTask 

लेकिन मुझे reassignment to val त्रुटि मिली। जाहिर है, मैं काम करने के लिए <<= के साथ कुछ भी नहीं प्राप्त कर सकता। मैं क्या गलत कर रहा हूं?

उत्तर

2

मुझे यह काम करने के लिए मिला। मैंने <<= और := ऑपरेटरों को असाइनमेंट ऑपरेटर के रूप में गलत समझा।

val hello = TaskKey[Unit]("hello", "Prints 'Hello World'") 

    val helloTask = hello := { 
    println("Hello World") 
    } 

    val u2 = TaskKey[Unit]("u2", "print u2") 
    val u2Task = u2 <<= hello map {_ => println("u2")} 

और परिणाम

> u2 
Hello World 
u2 
9

मैं तुम्हें बहुत बारीकी से नमूना निम्न नहीं दिख रहा है - यह मेरे लिए काम करता है:

val helloTask = TaskKey[String]("hello") 
    val u2Task = TaskKey[Unit]("u2") 

    helloTask := { 
    println("Hello World") 
    "Hello World" 
    } 

    u2Task := {println("u2")} 

    u2Task <<= u2Task.dependsOn (helloTask) 

सटीक कारण u2Task की अपनी परिभाषा एक अलग प्रकार का है कि है, तो आप आरईपीएल में देख सकते हैं:

scala> val u2Task = TaskKey[Unit]("u2") 
u2Task: sbt.TaskKey[Unit] = [email protected] 

scala> val u2Task = TaskKey[Unit]("u2") := {println("u2")} 
u2Task: sbt.Project.Setting[sbt.Task[Unit]] = setting(ScopedKey(Scope(This,This,This,This),u2)) 
+1

आपको लगता है कि काम करने के लिए मिल सकती है?। क्या आप अपनी पूर्ण कॉन्फ़िगरेशन फ़ाइल पोस्ट कर सकते हैं? क्योंकि मुझे एक त्रुटि मिली है (http://pastebin.com/Tw8REnt5)। और यहां मेरी बिल्ड फ़ाइल है (http://pastebin.com/L5kAW36v)। मैंने यहाँ एसबीटी 0.12.0 का इस्तेमाल किया। –

+0

यह एक अलग सवाल है। आपकी बिल्ड परिभाषा मेरे लिए अजीब लगती है, आप पुस्तकालय निर्भरता के बीच में एक ++ = कथन जोड़ रहे हैं। मैं एक एसबीटी विशेषज्ञ नहीं हूं, लेकिन यह अजीब लग रहा है। – themel

+0

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

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

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