0

我正在尝试将我的 scala 主应用程序代码打包为 .deb 文件。该应用程序只能在 ubuntu 机器上运行,所以我并不真正关心 Windows 等。

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

我目前对该项目的基于 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 等,但我想知道是否有更简单的编译配置?usingpackageArchetype.java_server迫使我为 Windows 等包含这么多未使用的变量。我想避免这种情况。

任何建议如何简化仅 deb 构建的设置 + 映射?

4

1 回答 1

3

您可以从以下位置提取与您相关的设置:

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 添加附加设置,以便捆绑的默认应用程序可以作为服务器启动。

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

于 2013-12-20T18:22:43.483 回答