我正在尝试将我的scala主应用程序代码打包为.deb文件。该应用程序只能在ubuntu机器上运行,因此我并不关心Windows等。
目前,我正在努力寻找使用最简单设置编译.deb最简单的方法。假设我的object Kernel extends App
文件夹中有一个简单的src
scala文件,该文件应捆绑在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等,但我想知道是否有更简单的编译配置?使用packageArchetype.java_server
迫使我为windows等包含许多未使用的变量。我想避免这种情况。
有关如何简化仅限deb构建的设置+映射的任何建议吗?
答案 0 :(得分:3)
您可以从以下位置获取与您相关的设置:
和
所以,这应该是这样的:
import com.typesafe.sbt.packager.archetypes._
packagerSettings
mapGenericMappingsToLinux
JavaAppPackaging.settings
JavaServerAppPackaging.debianSettings
告诫正确的进口。让我们来介绍一下这些内容:
packagerSettings
添加了打包程序任务的基本“流程”,但未配置任何文件或设置mapGenericMappingsToLinux
是一个钩子,它将把mappings in Universal
中配置的所有东西都用到Linux软件包并尝试使用它。JavaAppPackaging.settings
将采用您的构建定义,并自动使用您的应用程序的默认值填写mappings in Universal
配置。JavaServerAppPackaging.debianSettings
专门为debian添加了其他设置,以便捆绑的默认应用程序可以作为服务器启动。该插件的目标之一是允许您灵活地使用任何这些“映射”并获得默认行为或覆盖。它没有详细记录如何。我希望这有帮助!