我想在源代码中调用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上运行。)
答案 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
的文档中。