Как собрать пакет deb, содержащий одну сборку jar с sbt-assembly и sbt-native-packager?

Можно ли использовать sbt-assembly а также sbt-native-packager плагины для создания архетипа установки java-приложения, в котором вместо jar проекта и его зависимостей <app>/lib содержит только сборку банку?

Я создал приложение Spark и хочу добавить сборку в контекст, а не добавлять каждый jar-файл отдельно.

Изменить: мне нужно собрать пакеты deb для развертывания. Я хочу, чтобы пакет deb содержал сборку, а не проект и зависимые фляги.

Структура файловой системы должна быть

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

sbt-native-packager добавляет символическую ссылку в / usr / bin, что удобно, но не обязательно.

2 ответа

Это возможно с родным пакетом. Полный пример можно найти на github. Вы должны изменить отображения и scriptClasspath.

Ваш 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-onejar может помочь (вместо того, чтобы полагаться на другие плагины - sbt-assembly и sbt-native-packager):

sbt-onejar - это простой плагин для сборки инструментов для создания одного исполняемого JAR-файла, содержащего весь ваш код и зависимости в виде вложенных JAR-файлов.

Другие вопросы по тегам