如何在 sbt-native-packager Akka 构建中包含 sigar 本机库?
Posted
技术标签:
【中文标题】如何在 sbt-native-packager Akka 构建中包含 sigar 本机库?【英文标题】:How to include sigar native libraries in sbt-native-packager Akka build? 【发布时间】: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 示例中一样添加库,是否不会显示这些库? 是的,他们没有出现。 但我会再次检查。感谢您的评论。 【参考方案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"
)
【讨论】:
以上是关于如何在 sbt-native-packager Akka 构建中包含 sigar 本机库?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 sbt-native-packager 在 Docker 中使二进制文件可执行?
如何使用 sbt-native-packager 创建基本项目设置
如何在运行时为使用 sbt-native-packager 捆绑的应用程序加载配置文件
如何在 sbt-native-packager rpm 构建中包含 libsigar?