SBT Native Packager SystemVLoader不生成SystemLoader脚本

时间:2016-08-20 13:18:44

标签: scala sbt sbt-native-packager

我有一个scala SBT项目,我正在使用本机打包程序插件。我正在捆绑为JavaServerAppPackaging,并希望生成脚本,以便使用rc.d脚本(Amazon Linux)自动注册启动和关闭应用程序。 在我的plugins.sbt中: addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.2.0-M5")

在build.sbt中 lazy val server = DefProject("some/server", "server") .settings(serverModuleDeps) .settings(ServerSettings.allSettings: _*) .settings(CloudFormation.defaultSettings: _*) .settings(serverLoading in Universal := Option(ServerLoader.SystemV)) .settings(serviceAutostart:=true) .settings(startRunlevels:=Option("3")) .settings(stopRunlevels:=Option("3")) .settings(stackRegion := "US_WEST_2") .settings(codedeployAWSCredentialsProvider := Option(new ProfileCredentialsProvider("devcredentialsprovider"))) .dependsOn(sharedJvm) .dependsOn(langJVM) .enablePlugins(JavaServerAppPackaging, SystemVPlugin) .settings(daemonUser:="ec2-user") .configure(InBrowserTesting.jvm)

当我运行sbt stage时,我可以看到一个universal文件夹,其中包含带有sh和cmd文件的bin文件夹以启动应用程序。但是,没有代码将应用程序注册/启动为系统服务。是否需要任何其他配置才能使插件生成用于注册应用程序的脚本?我错过了什么?

我创建了一个基本项目来演示此问题:https://github.com/MojoJojo/sbt-native-packager-test

1 个答案:

答案 0 :(得分:1)

您的配置正确无误。你的sbt命令不是:)

with packageBin(IIRC触发器RDD[String])仅生成通用zip文件。系统加载程序是特定于操作系统的部分。这就是为什么它不包含在通用拉链中的原因。

使用

生成debian或rpm文件
universal:packageBin

生成的deb或rpm包将包含系统加载程序文件,因为它们位于基于rpm / debian的系统所期望的位置。

相关问题:https://github.com/sbt/sbt-native-packager/issues/869