我正在尝试在Scala程序中运行SBT命令。 SBT命令将在另一个项目中执行,而不是在包含我的Scala程序的项目中执行。 为我提供了项目的路径,因此我应该以某种方式使SBT命令在路径的目录中执行。 我的程序应等待SBT命令运行完成,然后再继续下一步。
此link说,添加以下行将使SBT等待外部输入,但是我不确定它是否适合我的情况。
connectInput in run := true
我还从中获得了进一步的信息link,即可以执行以下外部命令:
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"