scala – 如何从shell作为正常的命令行程序运行sbt主类?
如何从shell运行sbt应用程序,以便我可以作为一个普通的命令行程序运行我的应用程序(好像通过scala直接运行,而不必设置一个巨大的类路径)?
我知道我可以做: echo hello | sbt 'run-main com.foo.MyMain3 arg1 arg2' > out.txt 但是(1)由于启动sbt,所以(2)会导致所有的stdout和stderr都到stdout,所以(3)会导致所有输出都用logger [info]或[error]进行装饰。 我看着https://github.com/harrah/xsbt/wiki/Launcher,但是它似乎太重了,因为它下载了依赖关系,并且设置了一个新的环境。我只想在我现有的开发环境中运行这个程序。 到目前为止,我已经拼凑了我自己的脚本来建立一个类路径,你也可以做一些其他的事情,比如modify your project file to get sbt to print the raw classpath,但我觉得有一个更好的办法。 解决方法
start-script SBT plugin现在在:
https://github.com/sbt/sbt-start-script 它需要几个步骤来设置和生成不能在OS X上运行的脚本,但如果您在该平台上(如下所示),则可以很容易地修复它们。 建立 >安装greadlink(仅适用于OS X): a)brew install coreutils b)通过将这些行添加到?/ .bashrc来将readlink映射到新函数(greadlink): function readlink(){greadlink“$ @”; }} export -f readlink` addSbtPlugin(“com.typesafe.sbt”%“sbt-start-script”%“0.8.0”) $ sbt add-start-script-tasks#从build.sbt所在的目录执行 导入com.typesafe.sbt.SbtStartScript seq(SbtStartScript.startScriptForClassesSettings:_ *) 注意语句之间的空白行(用于SBT构建文件的de rigueur)。 生成起始脚本 然后,每当你想创建一个脚本来启动你的应用程序,如sbt run-main,但没有sbt,执行: $ sbt start-script 跑 target/start mypackage.MyMainClass (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |