2012-07-20 56 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

相关问题