2012-05-02 113 views
7

我有一个scala编译器项目,有些测试用例依赖于生成的jar文件 因此,我总是在运行“测试”之前手动运行“包”任务如何在'测试'之前运行“包”

我如何添加一个SBT任务,会做的“测试”的工作,但将取决于“一揽子”

回答

7

SBT 0.12:?

以下内容添加到您的项目设置:

(test in Test) <<= (test in Test) dependsOn (Keys.`package` in Compile) 

这会更改您项目的测试任务。但你也可以定义自己的任务:

val myTestTask = TaskKey[Unit]("my-test-task", "runs package and then test") 

然后添加到您的项目设置:

myTestTask <<= (test in Test) dependsOn (Keys.`package` in Compile) 

SBT 0.13:

以下内容添加到您的项目设置:

(test in Test) := { 
    (Keys.`package` in Compile).value 
    (test in Test).value 
} 

这改变了测试任务哟你的项目。但你也可以定义自己的任务:

val myTestTask = taskKey[Unit]("runs package and then test") 

然后添加到您的项目设置:

myTestTask := { 
    (Keys.`package` in Compile).value 
    (test in Test).value 
} 
+0

我收到以下错误'build.sbt:21:错误:EOF预期,但“包'found.' '(test in Test)<< =(test in Test)dependsOn package' – dips

+1

我不得不将它改成'(test in Test)<< =(test in Test)dependsOn(Keys。\ '编译中的package'')'。这是通常的方式,还是我的设置特有的东西?请注意,省略'Keys'会导致错误'对包的引用不明确。它在相同的作用域中导入两次,导入Keys._并导入sbt._' – dips

+2

@dips这是一个与Scala的'package'关键字不幸的冲突。 –

相关问题