Подтвердить что ты не робот

'sbt run' с аргументами CLI из оболочки

Я попробовал запустить проект scala с аргументами CLI, используя sbt launcher version 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]    ^

И информация о том, что вам нужно предоставить имя исходного файла, предоставляется моим проектом scala, чтобы указать, что main не получил никаких аргументов CLI.

Это что-то, что работало в предыдущей версии sbt (в упомянутом вопросе), или я делаю что-то неправильно?

4b9b3361

Ответ 2

Проблема может заключаться в том, как передать аргументы в файл запуска sbt на Java. В моем случае это:

java -Xmx4096M -jar `dirname $0`/sbt-launch_0.12.1.jar "[email protected]"

И я только что подтвердил: он работает с 0.12 и 0.12.1. Например, для программы, которая просто печатает свои аргументы, я получаю:

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

Используя run-main, вы также можете избежать возможности того, что sbt каким-то образом не видит вашу основную функцию.