【问题标题】:How to build deb package to contain single assembly jar with sbt-assembly and sbt-native-packager?如何使用 sbt-assembly 和 sbt-native-packager 构建 deb 包以包含单个程序集 jar?
【发布时间】:2014-08-08 07:36:36
【问题描述】:

是否可以使用sbt-assemblysbt-native-packager 插件来创建一个Java 应用程序原型安装,而不是让<app>/lib 中的项目jar 及其依赖项只包含程序集jar?

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

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

文件系统布局应该是

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

sbt-native-packager 为 /usr/bin 添加一个符号链接,这很方便但不是必需的。

【问题讨论】:

  • 能否添加预期的 deb 包布局以及文件与项目的关系?
  • 编辑问题以添加文件布局

标签: sbt apache-spark sbt-native-packager sbt-assembly


【解决方案1】:

本机包可以做到这一点。一个完整的例子可以找到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))

【讨论】:

    【解决方案2】:

    看来sbt-onejar 插件可能会有所帮助(而不是依赖其他插件 - sbt-assembly 和 sbt-native-packager):

    sbt-onejar 是一个简单的构建工具插件,用于构建单个 包含所有代码和依赖项的可执行 JAR 嵌套 JAR。

    【讨论】:

    • 我已经更新了问题,说明我需要像 sbt-native-packager 那样生成一个 deb 包。
    猜你喜欢
    • 2014-04-08
    • 2014-12-04
    • 2016-12-14
    • 2014-05-28
    • 2017-02-17
    • 2019-02-27
    • 2015-03-30
    • 2015-12-22
    • 2014-01-09
    相关资源
    最近更新 更多