Playframework 2.0 根据另一个测试的结果执行SBT任务
在我的Play项目中,我试图在标准Play的Playframework 2.0 根据另一个测试的结果执行SBT任务,playframework-2.0,sbt,Playframework 2.0,Sbt,在我的Play项目中,我试图在标准Play的测试任务之前运行JavaScript测试。我已经编写了一个SBT任务,除了我只希望在JavaScript测试通过时运行Playtest任务外,这个任务运行得很好。此时,Playtest任务运行JavaScript测试中发生的任何事情 我的build.sbt如下所示: val jsTest = taskKey[Int]("jsTest") jsTest in Test := { "karma start karma.conf.js" ! } te
测试任务之前运行JavaScript测试。我已经编写了一个SBT任务,除了我只希望在JavaScript测试通过时运行Playtest
任务外,这个任务运行得很好。此时,Playtest
任务运行JavaScript测试中发生的任何事情
我的build.sbt
如下所示:
val jsTest = taskKey[Int]("jsTest")
jsTest in Test := {
"karma start karma.conf.js" !
}
test := {
val exitCode = (jsTest in Test).value
if(exitCode == 0) {
(test in Test).value
}
}
正如我所说的,test.value
总是被执行,而不管exitCode
。我如何使test
以jsTest
的结果为条件?@SethTisue说得对
将以下内容添加到build.sbt
:
lazy val jsTest = taskKey[Int]("jsTest")
jsTest in Test := {
"karma start karma.conf.js" !
}
test := Def.taskDyn {
val exitCode = (jsTest in Test).value
if(exitCode == 0)
Def.task {
(test in Test).value
}
else Def.task()
}.value
当“karma start karma.conf.js”时,它似乎工作正常代码>被替换为0
或非0
数字。只要你说a:=。。。b、 值…
,则a依赖于b,b在运行a主体中的任何内容之前先运行。这就是为什么你试过的不起作用。也许taskDyn
会起作用?(请参阅)如果没有,可能您需要编写命令而不是任务。这最终是如何为您工作的?虽然我可以从命令行运行karma,但sbt抛出一个java io异常,声称它找不到指定的文件。有什么想法吗?当我测试解决方案时,我已经将karma排除在运行之外-我不知道如何安装/准备好进行测试。这就是我为什么写“替换为0或非0数字。”