' sbt run'使用来自shell的CLI参数

时间:2012-11-09 14:17:44

标签: scala sbt

我尝试使用sbt launcher版本0.12.1使用CLI参数运行我的scala项目。从scala提示符运行时它可以正常工作:

$ sbt
[info] (...)
> run sth
(...)
[success] Total time: 0 s, completed Nov 9, 2012 3:04:47 PM

但是当我想从shell运行它时,例如this answer,我收到一个错误:

$ sbt "run sth"
[info] (...)
you need to provide source file name
[success] Total time: 0 s, completed Nov 9, 2012 3:07:07 PM
[error] Not a valid command: sth (similar: set, last, shell)
[error] Expected '/'
[error] Expected ':'
[error] Not a valid key: sth (similar: test, state, watch)
[error] sth
[error]    ^

我的scala项目给出了“你需要提供源文件名”的信息,表明main没有得到任何CLI参数。

它是否在先前版本的sbt中有用(在引用的问题中),或者我做错了什么?

2 个答案:

答案 0 :(得分:31)

问题可能是您将sbt启动文件中的参数传递给Java的方式。就我而言,它是:

java -Xmx4096M -jar `dirname $0`/sbt-launch_0.12.1.jar "$@"

我刚刚确认:它适用于0.12和0.12.1。例如,对于只打印其参数的程序,我得到:

$ sbt "run-main SomeMain blah blah"
Outut:
[blah, blah]

通过使用run-main,您还可以避免sbt以某种方式看不到您的主要功能。

答案 1 :(得分:7)

这是0.12.1启动器中的错误:https://github.com/sbt/sbt-launcher-package/issues/34