【问题标题】:How to include sigar native libraries in sbt-native-packager Akka build?如何在 sbt-native-packager Akka 构建中包含 sigar 本机库?
【发布时间】:2015-03-30 09:39:55
【问题描述】:

我只是好奇是否有一些使用 Akka 打包的好方法。

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

.enablePlugins(AkkaAppPackaging)
  .enablePlugins(UniversalPlugin)

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

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

【问题讨论】:

  • rpm 解决方案也应该对您的情况有效。你能描述你的问题吗?如果您像在 rpm 示例中一样添加库,是否不会显示这些库?
  • 是的,他们没有出现。
  • 但我会再次检查。感谢您的评论。

标签: scala sbt akka sbt-native-packager sigar


【解决方案1】:

这就是我所做的

  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"
  )

【讨论】:

    猜你喜欢
    • 2014-12-04
    • 2016-06-13
    • 2016-12-14
    • 2014-08-08
    • 2013-12-24
    • 2015-03-11
    • 2019-02-27
    • 2015-09-01
    • 2015-12-22
    相关资源
    最近更新 更多