scala – 使用sbt运行多个应用程序

我有我的目录结构设置.

src/main/scala/main/Main.scala
src/main/scala/scripts/MainScript.scala

该脚本是将运行的后台作业.

我之前使用sbt-assembly将主文件打包成要部署的jar但我不确定如何用sbt-assembly或sbt-native-packager创建两个独立的jar.我将如何做到这一点以及这个问题的最佳方法是什么?

我希望做类似的事情.

java -jar main.jar $PORT
java -jar scriptMain.jar

最佳答案 仅使用native-packager解决此问题的一种方法如下.

>将所有主类放在src / main / scala中
>在Compile中定义mainClass:=应该默认运行的some(“foo.bar.Main”)
>您希望提供的src / universal / bin中的add additional scripts.这些脚本可以将native-packager and set the -main参数生成的主脚本调用到要调用的类.

现在你有一个输出包(例如zip,rpm,deb),它具有以下结构.假设您的应用程序名为myApp,并且您提供给名为otherApp1 / otherApp2的其他bin脚本

lib/ (jars live here)
conf/ (configuration files here, if any)
bin/
  myApp
  otherApp1
  otherApp2

不幸的是我没有脚本的例子(我的bash-foo对于SO上的即时魔法来说还不够好).最后,脚本(otherApp1,otherApp2)应该只将它们接收的参数传递给native-packager脚本(myApp).

an issue #633提供了一种生成这样的脚本的自动方式.

希望有所帮助,
缪奇

点赞