Установка текущего рабочего каталога при выполнении процесса оболочки

Я хотел бы назвать sbt update в моем исходном коде, чтобы обновить несколько проектов sbt. В оболочке это легко:

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

Используйте один из методов ProcessBuilder factory объекта Process:

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

Дополнительные сведения см. в файле scaladoc для пакета sys.process. К сожалению, он не упоминает аргументы "текущего рабочего каталога", но они находятся в документации объекта Process.