gpt4 book ai didi

SBT如何将输入从一个inputTask传递到另一个inputTask

转载 作者:行者123 更新时间:2023-12-02 09:36:27 24 4
gpt4 key购买 nike

我在使用 sbt v0.13.2 执行输入任务时遇到问题

我想要一个任务接受输入,将该输入设置为系统属性,然后运行另一个任务,例如使用该系统属性的测试。

我需要在单独的任务中设置系统属性,因为过度属性在测试期间不可见。然而,它在同一任务的后续运行期间是可见的。

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 中看到的第二个参数是固定的。

我未能找到解决方案。一些方法导致错误:非法动态引用,如下所示,其中两个任务更改为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生产一样使用

总之,如何创建将输入传播到其他任务的 inputTasks?

最佳答案

import sbt.complete.Parsers.spaceDelimited

lazy val setEnvironmentTask = inputKey[Unit]("Sets environment variable")

lazy val runIntegrationTest = inputKey[Unit]("Runs everything")

lazy val integrationTest = taskKey[Unit]("Runs integration test")

lazy val setEnvTask: Def.Initialize[InputTask[Unit]] = Def.inputTask{
val env = spaceDelimited("<arg>").parsed.head
System.setProperty("checkEnv", env)
}

setEnvironmentTask <<= setEnvTask

runIntegrationTest := setEnvironmentTask.parsed.flatMap{ _ =>
integrationTest.taskValue
}.value

integrationTest := {
println("integration test")
}

关于SBT如何将输入从一个inputTask传递到另一个inputTask,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25632113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com