2012-07-20 54 views
15

我想在我的源代碼中調用sbt update來更新多個sbt項目。在shell這很簡單:執行shell進程時設置當前工作目錄

cd /path/to/project && sbt update 

但是,如果我在我的代碼中使用scala.sys.process,也不會記得cd因此sbt被稱爲在錯誤的目錄。代碼是這樣的:

import scala.sys.process._ 
("cd /path/to/project" #&& "sbt update").!! 

而我沒有在文檔中找到任何可能性通過控制檯設置sbt的項目路徑。這將是很好,如果是這樣工作的:

"sbt -projectPath /path/to/project update".!! 

如果這樣的事情是可能的,這將節省我很多亂七八糟的! (尤其是它運行在UNIX和Windows)。

+2

你可以嘗試使用Process(cmd,cwd)!明確設置工作目錄。 – venechka 2012-07-20 11:58:58

+0

這個問題的標題令人難以置信的誤導。這個問題與sbt無關 - 它可能是其他任何程序。 – 2012-07-20 13:28:03

回答

32

使用的Process對象的ProcessBuilder工廠方法之一:

sys.process.Process(Seq("sbt","update"), new java.io.File("/path/to/project")).!! 

更多文檔,請參閱scaladoc file for the sys.process package。不幸的是,它沒有提到'當前工作目錄'的參數,但它們在對象Process的文檔中。

+0

我用'java.lang.ProcessBuilder'使用了「java」版本,它是'directory'方法,但這更優雅,更像scala。感謝那! – Themerius 2012-07-20 14:34:04

+0

謝謝,它幫助:) – Vinay 2015-08-09 11:53:38

相關問題