2012-03-14 41 views
8

我需要定義計算主類名稱然後運行它的自定義任務。我在想這樣的事情創建運行程序的新任務

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

,然後在SBT我將能夠運行

SBT>自定義任務

可這SBT 11.2做?

+0

你停留在0.11?如果可以升級到0.13,請參閱visual的答案。在0.11版本中,簡短版本是你不能重複使用'runMain'任務,而是看看sbt源代碼,查看該任務的調用情況,然後在自己的任務中執行相同的調用。 – 2013-11-29 15:22:53

回答

0

晚的答案,但在文檔http://www.scala-sbt.org/release/docs/Detailed-Topics/Tasks#defining-a-new-task

您可以運行任何Scala代碼的任務代碼中提到,你可以創建新的SBT任務。任務也可以採用輸入參數。

非常強大的國際海事組織。

+0

鏈接文檔沒有問題,但應該注意頁面頂部的版本組合框,因爲不同版本的sbt之間存在很大差異。 – Beryllium 2013-08-27 15:04:32

+0

雖然這裏的問題是重用現有輸入任務的功能,例如'runMain'。請參閱https://github.com/sbt/sbt/issues/407 – 2013-11-29 15:21:47

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

請注意,'fullInput'方法在版本0.13之前未添加到sbt。 – 2013-11-29 15:11:42

相關問題