使用sbt运行多个应用程序

时间:2016-04-01 17:31:30

标签: scala sbt-assembly sbt-native-packager

我的目录结构设置如此。

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

该脚本是一个将要运行的后台作业。

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

我希望做类似的事情。

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

1 个答案:

答案 0 :(得分:1)

仅使用native-packager解决此问题的一种方法是:

  • 将所有主要课程放入src/main/scala
  • 定义应作为默认值运行的mainClass in Compile := 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提供了一种生成此类脚本的自动方式。

希望有所帮助, 缪奇