【问题标题】:sbt set java options in Dynamic Tasksbt 在动态任务中设置 java 选项
【发布时间】:2014-07-28 00:00:55
【问题描述】:

我正在尝试编写带有输入参数的任务,将其传递给 testOnly 任务并执行。它运行良好,但我无法在此任务中设置系统属性,这将在测试中可见。此属性不应影响其他任务,并且应仅在此自定义任务中可见。

这是我的代码示例

lazy val myTestOnly = InputKey[Unit]("myTestOnly", "test only with special sys prop")

val myTestOnlyTask = myTestOnly := {
  Def.inputTaskDyn {
    val args: Seq[String] = spaceDelimited("").parsed

    javaOptions in Test ++= Seq("-Dfoo=bar") // does not work
    testOptions += Tests.Setup(() => System.setProperty("foo", "bar")) //does not work
    System.setProperty("foo", "bar") // does not work

    (testOnly in Test).toTask(" " + args.head)
  }.evaluated
}

当我在 sbt 控制台中运行时

 myTestOnly com.sampleTest

testOnly 执行但“foo”属性不可见

那么问题是如何在任务定义中设置属性,这些属性仅在当前任务的测试运行时可见?

【问题讨论】:

    标签: scala sbt


    【解决方案1】:

    在 build.sbt 中:

    val currentTimestamp: String =
      new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date())
    val targetDir
      : String = baseDirectory + "/project/target/mtd/" + currentTimestamp
    
    javaOptions in Test ++= Seq("-Ddynamic_dir_to_set=" + targetDir)
    

    sbt test 将保证dynamic_dir_to_set 环境变量的值。

    几个理论链接去低谷:

    http://www.scala-sbt.org/0.13.2/docs/Detailed-Topics/Forking.html#change-working-directory http://www.scala-sbt.org/0.13/docs/Plugins-and-Best-Practices.html

    【讨论】:

      猜你喜欢
      • 2019-01-23
      • 2015-07-27
      • 1970-01-01
      • 2014-12-12
      • 1970-01-01
      • 2014-02-16
      • 2021-11-11
      • 2011-11-12
      • 2023-03-26
      相关资源
      最近更新 更多