2
我使用SBT v0.13.2SBT如何通過輸入從一個inputTask到另一個inputTask
我想有它接受輸入任務與輸入任務的問題,設置一個輸入作爲系統性能和運行後,另一項任務所有這些,例如使用該系統屬性的測試。
我需要在單獨的任務中設置系統屬性,因爲overwise屬性在測試過程中不可見。但是在隨後的同一個任務中,它是可見的。
lazy val setEnvironmentTask = taskKey[Unit]("Sets environment variable")
lazy val integrationTest = taskKey[Unit]("Runs integration test")
lazy val runIntegrationTest = taskKey[Unit]("Runs everything")
setEnvironmentTask := {
System.setProperty("checkEnv", "production")
}
integrationTest := {
(testOnly in Test).toTask(" integrations.MatchModelsIntegrationTest").value
}
runIntegrationTest := {
setEnvironmentTask.value
integrationTest.value
}
這工作,但你可以在setEnvironmentTask第二個參數是固定的看。
我找不到解決方案。一些方法導致error: Illegal dynamic reference
,像下面其中兩個任務改爲inputTasks和進口增加:
import sbt.complete.Parsers.spaceDelimited
lazy val setEnvironmentTask = inputKey[Unit]("Sets environment variable")
lazy val runIntegrationTest = inputKey[Unit]("Runs everything")
setEnvironmentTask := {
val env = spaceDelimited("<arg>").parsed.head
System.setProperty("checkEnv", env)
}
runIntegrationTest := {
val env = spaceDelimited("<arg>").parsed.head
setEnvironmentTask.toTask(env).value // <<<<< this is there is fails with "error: Illegal dynamic reference: env"
integrationTest.value
}
應該像sbt runIntegrationTest production
綜上所述可以使用,如何創建傳播輸入到其他inputTasks任務?