2013-12-09 43 views

回答

6

我這樣做在my tests。然而,那裏有一些奇怪的輸出來捕捉失敗。

基本要點是sbt提供了一個process API哪個eventualyl成爲斯卡拉核心庫的一部分。

下面是一個例子:

val restartSystemService = taskKey[Unit]("restarts stuff") 

restartSystemService := { 
    val logger = streams.value.log 
    Process("systemctrl restart project") ! logger match { 
    case 0 => // Success! 
    case n => sys.error(s"Could not restart the project, exit code: $n") 
    } 
} 
3

好吧,我已經找到了一個小型圖書館 - scala-ssh,使其在.scala構建定義可用的,我們需要添加這種依賴關係到project/build.sbt文件,這樣我們可以定義這樣的任務:

val restart = taskKey[Unit]("restart") 

restart := { 
    SSH(host, config) { client => 
    client.exec("systemctl restart project") 
    } 
}