Установка текущего рабочего каталога при выполнении процесса оболочки
Я хотел бы назвать 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
.