Я пытаюсь запустить команды SBT в программе Scala.Команды SBT должны выполняться в другом проекте, а не в проекте, содержащем мою программу Scala.Мне предоставлен путь к проекту, и поэтому я должен каким-то образом заставить команды SBT выполняться в каталоге пути.Моя программа должна дождаться завершения выполнения команды SBT, прежде чем перейти к следующему шагу.
Эта ссылка говорит, что добавление строки ниже заставит SBT ждать внешнего ввода, но яне уверен, что это будет работать для моего случая.
connectInput in run := true
Я также получил дополнительную информацию по этой ссылке , что можно запускать внешние команды следующим образом:
scala> import sys.process._
import sys.process._
scala> val result = "ls -al" !
Один !
после команды означает, что вы получите код состояния, а двойной !!
означает, что вы получите фактический результат выполнения внешней команды.Мне трудно объединить эту информацию для решения, в частности, моей задачи.
Например, если у меня есть указанные ниже команда SBT и путь к проекту, как бы я выполнил ее в программе Scala:
sbt -ivy ./.ivy2 -Dsbt.ivy.home=./.ivy2 -Divy.home=./.ivy2 semanticdb
/Users/soft/Downloads/TestAmplification
Я натолкнулся на ту же команду SBT, написанную выше, как показано ниже, но она не имела особого смысла:
val sbtCmd = s"sbt -ivy ./ivy2 -Dsbt.ivy.home=./ivy2 -Divy.home=./ivy2 -Dsbt.boot.directory=./sbt -Dsbt.global.base=./sbt -mem 4096 semanticdb"