使用sbt本机打包程序简化deb-only构建的设置



我正试图将我的scala主应用程序代码打包为.deb文件。该应用程序只会在ubuntu机器上运行,所以我真的不在乎windows等。

目前,我正在努力寻找使用最简单设置编译.deb的最简单方法。假设我的src文件夹中有一个简单的object Kernel extends Appscala文件,该文件应该绑定到jarddependencies中。

我目前为该项目设置的基于scala的debian是:

import com.typesafe.sbt.SbtNativePackager._
import NativePackagerKeys.

val debSettings = mapGenericFilesToLinux ++ linuxSettings ++ debianSettings ++ Seq( 
name in Debian := "my-app",
version in Debian := "0.1-version",
mainClass := Some("Kernel"),
packageSummary := "",
target := new java.io.File("target"),
packageDescription := "my app",
packageDescription := "my app desciption",
NativePackagerKeys.normalizedName := "normalizedName",
maintainer := "my name",
sourceDirectory := new java.io.File("./src"),
debianPackageDependencies in Debian ++= Seq("openjdk-7-jre"),
debianPackageRecommends in Debian ++= Seq(),
linuxPackageMappings in Debian ++= Seq() ,
debianMaintainerScripts ++=Seq())

debian:package-bin调用有效,创建了deb,但没有将二进制文件/jar复制到deb中,所以我显然缺少一些配置。我知道仍然缺少linuxPackageMappings等,但我想知道是否有更容易的编译配置?使用packageArchetype.java_server迫使我为windows等包含太多未使用的变量。我想避免这种情况。

有什么建议可以简化deb构建的设置+映射吗

您可以从中提取与您相关的设置

https://github.com/sbt/sbt-native-packager/blob/master/src/main/scala/com/typesafe/sbt/packager/archetypes/JavaServerApplication.scala#L24

因此,这应该类似于:

import com.typesafe.sbt.packager.archetypes._
packagerSettings
mapGenericMappingsToLinux
JavaAppPackaging.settings
JavaServerAppPackaging.debianSettings

请注意正确的导入。让我们介绍一下它们各自的作用:

  1. packagerSettings添加了打包程序任务的基本"流",但不配置任何文件或设置
  2. mapGenericMappingsToLinux是一个钩子,它将接受mappings in Universal中配置的所有内容,并试图使其对linux包友好
  3. JavaAppPackaging.settings将接受您的构建定义,并使用应用程序的默认值自动填写mappings in Universal配置
  4. JavaServerAppPackaging.debianSettings添加了专门针对debian的附加设置,使得捆绑的默认应用程序可以作为服务器启动

插件的目标之一是允许您灵活地使用这些"映射"中的任何一个,并获得默认行为或覆盖。只是没有很好的记录。我希望这能有所帮助!

最新更新