我很好奇Akka包装是否有一些不错的方法。

我发现了一些示例here,但它是为rpm构建创建的,我在build.sbt中使用了这两个插件:

.enablePlugins(AkkaAppPackaging)
  .enablePlugins(UniversalPlugin)

实际上,我通过将sigar库手动复制到生成应用程序启动程序脚本的目录中找到了一种解决方法。

还需要将-Djava.library.path=./sigar设置为sigar库所在的适当目录,这可以在build.sbt中设置,也可以稍后通过更改JAVA_OPTS在生成的脚本中手动更改。

最佳答案

这是我所做的

  lazy val sigarJavaOpts = "-Djava.library.path=./sigar"

  libraryDependencies ++= Dependencies.sigar

  mappings in Universal ++= MappingsHelper directory getClass.getClassLoader.getResource("sigar").getFile

  bashScriptExtraDefines += s"""addJava "$sigarJavaOpts" """

  javaOptions in run += sigarJavaOpts

请注意,我将sigar文件放置在资源文件夹中。您可能还需要从以下内容导入
import com.typesafe.sbt.SbtNativePackager.Universal
import com.typesafe.sbt.packager.MappingsHelper
import com.typesafe.sbt.packager.Keys.bashScriptExtraDefines

我也有一个Dependencies对象
  val sigar = Seq(
    "org.fusesource" % "sigar" % "1.6.4"
  )

10-08 15:44