执行shell进程时设置当前工作目录

时间:2012-07-20 09:39:31

标签: scala process

我想在源代码中调用sbt update来更新多个sbt项目。在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上运行。)

1 个答案:

答案 0 :(得分:35)

使用ProcessBuilder对象上的Process工厂方法之一:

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

有关更多文档,请参阅scaladoc file for the sys.process package。不幸的是,它没有提到“当前工作目录”参数,但它们在对象Process的文档中。