2013-12-02 2 views
11

Я бегу compile test:compile it:compile довольно часто и ... хотел бы сократить количество нажатий клавиш примерно на *:compile. Однако это не работает.Может ли sbt выполнить «скомпилировать тест: скомпилировать его: скомпилировать» как одну команду, скажем «*: компилировать»?

$ sbt *:compile 
[info] Loading global plugins from /Users/jacek/.sbt/0.13/plugins 
[info] Loading project definition from /Users/jacek/oss/scalania/project 
[info] Set current project to scalania (in build file:/Users/jacek/oss/scalania/) 
[error] No such setting/task 
[error] *:compile 
[error]  ^

Возможно ли вообще? Я использую SBT 0.13.

ответ

17

test:compile подразумевает compile, поэтому compile не должен быть явно запущен до test:compile. Если ваша конфигурация IntegrationTestextend с Test, it:compile подразумевает test:compile.

Одним из вариантов является определение псевдонима, который выполняет несколько команд:

sbt> alias compileAll = ; test:compile ; it:compile 

help alias Посмотреть и help ; для деталей. Вы можете сделать это частью вашей сборки с:

addCommandAlias("compileAll", "; test:compile ; it:compile") 

Другой вариант заключается в определении пользовательской задачи, которая зависит от других, и называем это:

lazy val compileAll = taskKey[Unit]("Compiles sources in all configurations.") 

compileAll := { 
    val a = (compile in Test).value 
    val b = (compile in IntegrationTest).value 
    () 
} 
Смежные вопросы