我试图获得一个使用Systemd原型的rpm。但是,我在build.sbt中导入错误。我使用sbt版本0.13.11具体来说,我看到了:
build.sbt:3: error: object systemloader is not a member of package com.typesafe.sbt.packager.archetypes
我试图使用sbt-native-packager的1.1.4版。这是我的plugins.sbt:
// The Typesafe repository
resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"
// The Sonatype snapshots repository
resolvers += "Sonatype snapshots" at "https://oss.sonatype.org/content/repositories/snapshots/"
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "1.1.4")
我的build.sbt:
import com.typesafe.sbt.packager.linux.LinuxSymlink
import com.typesafe.sbt.packager.rpm.RpmPlugin.autoImport._
import com.typesafe.sbt.packager.archetypes.systemloader._
scalaVersion := "2.11.7"
name := "systemdtest"
organization := "myTestOrg"
enablePlugins(JavaServerAppPackaging, RpmPlugin, SystemdPlugin)
version := "1.0"
// RPM SETTINGS
rpmVendor := "me"
packageSummary in Linux := "A summary"
packageDescription := "Do some stuff"
rpmRelease := "1"
rpmBrpJavaRepackJars := false
rpmLicense := Some("Copyright this project")
rpmGroup := Some("mygroup")
rpmPrefix := Some("/opt/mypath")
我在尝试运行时遇到错误
sbt stage
或
sbt rpm:packageBin
答案 0 :(得分:5)
本机打包程序站点(http://www.scala-sbt.org/sbt-native-packager/archetypes/systemloaders.html)上的1.1文档说使用名为SystemdPlugin的自动插件。
然而,这在1.1分支中不存在,并且在1.2分支中引入(在本文发布时为1.2.0M3),而不是GA。
正确的约定是在build.sbt中添加一个名为“serverLoading。”的赋值。
在我的情况下,要使用RPM,我需要将build.sbt更改为以下内容:
import MyComp from "./file1";
// ... in my other component ...
// I am definitely using the component:
render() { return <MyComp foo="bar"/> }
我发现我的解决方案正在阅读有关此问题的评论。 https://github.com/sbt/sbt-native-packager/pull/785
答案 1 :(得分:4)
sbt native-packager 1.2.0我几乎已经发布(2016年11月),Muki Seiler详细信息this new feature来自PR 785:
Systemloaders
现在是AutoPlugins
以前,Java Server Application Archetype提供了一个设置
serverLoading
,您可以在其中定义系统加载器:
import com.typesafe.sbt.packager.archetypes.ServerLoader
serverLoading in Rpm := ServerLoader.Upstart
这会添加必要的配置文件和维护者脚本(
postinst
,postun
等),以便注册和启动您的应用程序。服务器原型与
systemloaders
之间紧密耦合的最大问题是,如果不改变服务器原型中的很多,很难添加systemloader
特定设置。
对代码和输出进行推理也要困难得多。使用额外的系统加载程序插件,我们可以
systemloader
功能(有SystemLoaderPlugin
来处理常用设置)通过启用具体的
启用systemloader
插件systemloader
enablePlugins(SystemdPlugin)