我有一个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
答案 0 :(得分:1)
您的配置正确无误。你的sbt命令不是:)
with packageBin(IIRC触发器RDD[String]
)仅生成通用zip文件。系统加载程序是特定于操作系统的部分。这就是为什么它不包含在通用拉链中的原因。
使用
生成debian或rpm文件universal:packageBin
生成的deb或rpm包将包含系统加载程序文件,因为它们位于基于rpm / debian的系统所期望的位置。