web-dev-qa-db-ja.com

シェルからのCLI引数を使用した「sbt run」

scalaプロジェクトをCLI引数で実行し、sbtランチャーバージョン0.12.1を使用しました。scalaプロンプトから実行すると問題なく動作します。

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

しかし、たとえば この答え のように、シェルから全体を実行したい場合、エラーが発生します。

$ 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]    ^

「ソースファイル名を指定する必要があります」という情報は、my scalaプロジェクトによって提供され、メインがCLI引数を取得しなかったことを示します。

以前のバージョンのsbtで(参照された質問で)機能したものですか、それとも何か間違っていますか?

27
nietaki

これは0.12.1ラン​​チャーのバグです: https://github.com/sbt/sbt-launcher-package/issues/34

7
Lukas Rytz

問題は、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が何らかの理由でメイン関数を認識しない可能性も回避できます。

31
bluenote10