gpt4 book ai didi

sbt - 如何使用 sbt-assembly 和 sbt-native-packager 构建 deb 包以包含单个程序集 jar?

转载 作者:行者123 更新时间:2023-12-04 21:40:35 25 4
gpt4 key购买 nike

是否可以使用 sbt-assemblysbt-native-packager插件来创建 java 应用程序原型(prototype)安装,而不是在 <app>/lib 中拥有项目 jar 及其依赖项只包含组装 jar ?

我构建了一个 Spark 应用程序,我想将程序集添加到上下文中,而不是单独添加每个 jar。

编辑:我需要为部署构建 deb 包。我希望 deb 包包含程序集而不是项目和依赖的 jar。

文件系统布局应该是

<install_dir>
bin
appname
conf
application.conf
lib
appname-assembly.jar

sbt-native-packager 添加一个符号链接(symbolic link)到/usr/bin 这很方便但不是必需的。

最佳答案

这可以通过原生包实现。可以找到一个完整的例子 on github您必须更改 ma​​ppingsscriptClasspath

你的build.sbt应该包含以下部分

// the assembly settings
assemblySettings

// we specify the name for our fat jar
jarName in assembly := "assembly-project.jar"

// using the java server for this application
packageArchetype.java_server

maintainer in Linux := "Nepomuk Seiler <nepomuk.seiler@mukis.de>"

packageSummary in Linux := "Custom application configuration"

packageDescription := "Custom application configuration"

// removes all jar mappings in universal and appends the fat jar
mappings in Universal := {
// universalMappings: Seq[(File,String)]
val universalMappings = (mappings in Universal).value
val fatJar = (assembly in Compile).value
// removing means filtering
val filtered = universalMappings filter {
case (file, name) => ! name.endsWith(".jar")
}
// add the fat jar
filtered :+ (fatJar -> ("lib/" + fatJar.getName))

关于sbt - 如何使用 sbt-assembly 和 sbt-native-packager 构建 deb 包以包含单个程序集 jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24278233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com