我正试图将我的scala主应用程序代码打包为.deb文件。该应用程序只会在ubuntu机器上运行,所以我真的不在乎windows等。
目前,我正在努力寻找使用最简单设置编译.deb的最简单方法。假设我的src
文件夹中有一个简单的object Kernel extends App
scala文件,该文件应该绑定到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
请注意正确的导入。让我们介绍一下它们各自的作用:
packagerSettings
添加了打包程序任务的基本"流",但不配置任何文件或设置mapGenericMappingsToLinux
是一个钩子,它将接受mappings in Universal
中配置的所有内容,并试图使其对linux包友好JavaAppPackaging.settings
将接受您的构建定义,并使用应用程序的默认值自动填写mappings in Universal
配置JavaServerAppPackaging.debianSettings
添加了专门针对debian的附加设置,使得捆绑的默认应用程序可以作为服务器启动
插件的目标之一是允许您灵活地使用这些"映射"中的任何一个,并获得默认行为或覆盖。只是没有很好的记录。我希望这能有所帮助!