2013-12-20 23 views
0

我想將我的scala主應用程序代碼打包爲.deb文件。該應用程序將只能在一臺Ubuntu機器上運行,所以我並不在乎Windows等。簡化deb的設置只用sbt本地打包程序生成

目前,我正在努力尋找使用最簡單的設置來編譯.deb最簡單的方法。假設我在我的src文件夾中有一個簡單的object Kernel extends App scala文件,該文件夾應該捆綁在jardependencies中。該項目

我目前基於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創建,但沒有二進制文件/罐被複制到DEB所以我顯然錯過了一些配置。我知道仍然缺少linuxPackageMappings等,但我想知道是否有一個更容易編譯配置?使用packageArchetype.java_server迫使我包括這麼多未使用的變量的Windows等我想避免這一點。

任何建議如何簡化deb-only構建的設置+映射?

回答

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包的linux友好。
  3. JavaAppPackaging.settings將採用您的構建定義,並自動填寫mappings in Universal配置與您的應用程序的默認值。
  4. JavaServerAppPackaging.debianSettings增加了額外的設置專門爲debian,使捆綁的默認應用程序可以作爲服務器啓動。

該插件的目標之一是讓您靈活地使用任何這些「映射」並獲得默認行爲或覆蓋。這只是沒有很好的文件如何。我希望這有幫助!

+0

偉大的工程 - 現在我正在尋找一種方法來結合oneJar(https://github.com/sbt/sbt-onejar)和「debian:packageBin」命令。目前,我的deb是空的,除了配置文件 – magegu

+0

沒關係:答案在這裏:http://stackoverflow.com/questions/11365790/getting-an-sbt-task-to-depend-on-the-onejar-task – magegu