SBT:启动非默认项目主类的命令行"run"

fgy*_*ica 62 scala sbt

我开始使用sbt构建我的Scala代码(并处理依赖项).据我所知,如果我使用

$ sbt run <args>
Run Code Online (Sandbox Code Playgroud)

在命令行上,这将运行主项目的主类.

是否可以从命令行在任何其他项目中"运行",即不在交互式会话模式下?(我正在考虑可能看起来像$ sbt project <proj> run <args>什么的东西......)

我在交互模式下会做的是:

$ sbt
> project <projectname>
> run <args>
Run Code Online (Sandbox Code Playgroud)

这看起来很简单,但我找不到任何描述此行为的文档.提示将非常感谢...

Mor*_*itz 92

您只需引用每个命令(如本页第二个示例所示),因此在您的情况下,它将是:

$ sbt "project foo" "run arg1 arg2"
Run Code Online (Sandbox Code Playgroud)


Gui*_*ssé 41

$ sbt foo/run arg1 arg2 也工作

  • 我认为在大多数投票的答案中,它比原始方式更多,而不是加倍命令 (2认同)

Xåp*_* - 14

这工作:sbt "runMain com.example.Hello arg1"sbt "run-main com.example.Hello arg1".

请参阅此处以供参考:https://blog.ssanj.net/posts/2016-03-02-how-to-run-a-specific-main-class-with-parameters-through-sbt.html


ran*_*ast 9

为我工作:

$ sbt "run someNumber"
Run Code Online (Sandbox Code Playgroud)

这也可能有所帮助:

def main(args: Array[String]) {
    val n = args(0).toInt
}
Run Code Online (Sandbox Code Playgroud)