我有一个可以和sbt一起运行的scala项目。现在我想将它作为一个独立的应用程序执行。如何使用scala命令运行它并确保所有内容的正确版本,特别是scala-library和JVM?
PS:只是为了澄清一下ruby的一个例子我的意思。 我写了一些常规使用的ruby脚本。例如,要比OS更干净地应用更新。
当我编写脚本时,我使用了ruby 1.8.3。 (以此处的版本号为例。)我使用了命令行ruby my_script
。
现在版本是ruby 2.0.1。由于语言更改,脚本不会在此ruby下运行。所以我使用命令行ruby1.8.3 my_script
。
或者说我把它嵌入了shebang系列中。
Simalarly我想使用scala my_jar.jar
运行一个jar,但它是使用scala版本2.8.3构建的,并且不会使用该命令运行。如何让scala使用正确的版本?
答案 0 :(得分:1)
你可以尝试两件事:
1)sbt-native-packager将创建一个可执行文件。例如,您可以创建RPM或Debian包。
2)你可以创建一个" uber jar"使用(比如说)sbt-assembly并将所有依赖项打包成一个胖jar。您可以指定在运行jar时要执行的main函数(使用JVM java -jar a-jar-to-execute.jar
命令)。
以上两者都是非常活跃且广泛使用的SBT插件。
创建jar之后,所有内容都是字节码,因此您不必担心Scala版本。只要Java(jvm)版本兼容,它就会运行。