2012-03-14 18 views
8

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

customTask { 
    mainClass = compute main class name based on env 
    runMain(mainClass, jvm-args, fork=true) 
} 

की तरह सोच रहा था और उसके बाद एसबीटी में मैं इस एसबीटी 11.2 में किया जा सकता

एसबीटी> कस्टम कार्य

चलाने के लिए सक्षम हो सकता है?।

+0

आप 0.11 पर अटक कर रहे हैं? यदि आप 0.13 पर अपग्रेड कर सकते हैं, तो दृश्य का जवाब देखें। 0.11 पर, लघु संस्करण यह है कि आप 'रनमेन' कार्य का पुन: उपयोग नहीं कर सकते हैं, इसके बजाय, आप एसबीटी स्रोत कोड देखते हैं, देखें कि वह कार्य क्या करता है, और फिर अपने ही कार्य में वही कॉल करें। –

उत्तर

0

देर जवाब लेकिन आप नए एसबीटी कार्यों के रूप में प्रलेखन http://www.scala-sbt.org/release/docs/Detailed-Topics/Tasks#defining-a-new-task

आप कार्य कोड के रूप में किसी भी स्केला कोड चला सकते हैं में उल्लेख किया है बना सकते हैं। कार्य इनपुट तर्क भी ले सकते हैं।

बहुत अधिक शक्तिशाली आईएमओ।

+0

लिंक किए गए दस्तावेज़ ठीक हैं, लेकिन किसी को पृष्ठ के शीर्ष पर संस्करण कॉम्बो बॉक्स पर ध्यान देना चाहिए, क्योंकि विभिन्न एसबीटी संस्करणों के बीच काफी अंतर हैं। – Beryllium

+0

यहां समस्या हालांकि मौजूदा इनपुट कार्य जैसे 'रनमेन' से कार्यक्षमता का पुन: उपयोग कर रही है। Https://github.com/sbt/sbt/issues/407 –

2

अच्छी तरह से आप इसे .. एक बार आज़मा सकें मैं मेरे लिए ठीक काम करता है -

lazy val testngRun = inputKey[Unit]("custom run task for testng") 

testngRun := { 
    val one = (runMain in Compile).fullInput(" org.testng.TestNG -testclass com.pg.acceptance.testcase.PfsLoginServiceTest").evaluated 
} 
+1

देखें ध्यान दें कि 'पूर्ण इनपुट' विधि संस्करण 0.13 तक एसबीटी में नहीं जोड़ा गया था। –

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