我需要在sbt中定义一个运行test的自定义测试配置,但需要一些额外的设置。我一直在四处寻找如何做到这一点,但我似乎无法做到这一点。
我想做的是:> test
运行正常的测试任务,> pipelinetest
与测试完全相同,只有(javaOptions += "-Dpipeline.run=run"
。
我已经弄清楚如何设置javaOptions进行测试,如下所示:
javaOptions in test += "-Dpipeline.run=run"
所以我希望能够做到的是:javaOptions in pipelinetest += "-Dpipeline.run=run"
我如何定义pipelinetest
来实现这一目标?这需要成为一项新任务吗?或者这是test
中的设置。我现在很新,并且对此感到很困惑,阅读文档并没有帮助,所以任何帮助都会非常感激。
答案 0 :(得分:1)
我只有部分答案,但我认为这可能是有用的信息。我只想尝试为Spark中的sbt构建做类似的事情 - 我想有办法用调试器运行测试。马克哈拉的评论指出了我正确的方向。 change I made was:
lazy val TestDebug = config("testDebug") extend(Test)
...
baseProject
.configs(TestDebug)
.settings(inConfig(TestDebug)(Defaults.testTasks): _*)
.settings(Seq(
javaOptions in TestDebug ++= "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005"
.split(" ").toSeq))
这使我通常只调用test
,testOnly
等,但现在我也可以运行testDebug:testOnly ...
,这将使用上面定义的额外选项。 (它可能还创建了testDebug:test
等等,这些额外的选项没有用,但是很好。)
我真的不明白为什么,但让我开始工作的一个重要部分是使用inConfig(TestDebug)(Defaults.testTasks)
,而不是inConfig(TestDebug)(Defaults.testSettings)
。
在我的情况下,我遇到了麻烦,弄清楚如何(a)让它为多项目构建工作;(b)我们的构建甚至更奇怪它是基于POM文件,这使得项目定义与每个示例不同。
像往常一样,我的问题是,我发现信息看似相关,但我的构建有一些不寻常的方面,这使我无法完全解决问题;虽然看起来我需要微不足道的修改,但没有彻底的理解,很难修改这些例子。