我有一个像这样的多项目模块
JSON
我想实现一个runAll sbt任务,以便我可以在不同的jvm中运行所有主类
##注意:可以有任意数量的子模块
答案 0 :(得分:0)
最好的想法是从build.sbt任务中调用shell脚本,如此
val searchPackage = taskKey[Unit]("SearchPackage")
searchPackage := {
Seq("./run_all_main_class.sh" !)
}
您可以在该shell脚本中添加所有类,有点像这样
run_all_main_class.sh看起来像这样,你可以根据需要自定义这个shell脚本。
#!/usr/bin/env bash
nohup sbt "runMain com.something.MainClass1" &
nohup sbt "runMain com.something.MainClass2" &
答案 1 :(得分:0)
有点晚了,但可能会对其他有相同问题的人有所帮助。这是我的解决方法。
build.sbt:
lazy val runAll = taskKey[Unit]("run-all, for running all main classes")
def runAllIn(config: Configuration) = Def.task {
val s = streams.value
val cp = (fullClasspath in config).value
val r = (runner in run).value
(discoveredMainClasses in config).value.foreach(c =>
r.run(c, cp.files, Seq(), s.log))
}
// For the target project that you intend to run "runAll"
lazy val example = (project in file("example"))
.settings(runAll := runAllIn(Compile).value)