'sbt'使用来自shell的CLI参数运行'

nie*_*aki 27 scala sbt

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

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

但是当我想从shell运行它时,根据这个答案,例如,我收到一个错误:

$ 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]    ^
Run Code Online (Sandbox Code Playgroud)

并且我的scala项目给出了"您需要提供源文件名"信息,以指示main没有获得任何CLI参数.

它是在先前版本的sbt中工作的(在引用的问题中),还是我做错了什么?

blu*_*e10 31

问题可能是您将sbt启动文件中的参数传递给Java的方式.在我的情况下它是:

java -Xmx4096M -jar `dirname $0`/sbt-launch_0.12.1.jar "$@"
Run Code Online (Sandbox Code Playgroud)

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

$ sbt "run-main SomeMain blah blah"
Outut:
[blah, blah]
Run Code Online (Sandbox Code Playgroud)

通过使用run-main你也可以避免sbt以某种方式看不到你的主要功能的可能性.


Luk*_*ytz 7

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