在使用sbt-native-packager(0.7.x)的Play框架(2.3.x)Java項目中,如何創建客戶特定的.deb和.rpm包變體?sbt-native-packager:如何創建一個包的變體,例如配置擴展?
使用通用設置創建二進制包(.deb,.zip)。一些客戶根據其規格要求守護程序用戶名或日誌位置等專業。我想保留通用包和它們的設置,並添加例如有一些覆蓋的新配置,以便我可以得到activator customer:packageBin
的變體。
我到目前爲止所嘗試的是創建一個新的SBT配置,其中extend
是sbt-native-packager的Debian
配置,因此我有限的理解應該繼承它的設置和任務。然後我希望能夠設置例如daemonUser in Customer := "custom"
,但以其他方式使用現有的Debian設置。
的樣片播放,Java項目(activator new
>play-java
)我build.sbt
:
import NativePackagerKeys._
name := """play-java"""
version := "1.0-SNAPSHOT"
lazy val Customer = config("customer") extend(Debian)
lazy val root = (project in file("."))
.enablePlugins(PlayJava)
.configs(Customer)
.settings(inConfig(Customer)(packagerSettings) : _*)
scalaVersion := "2.11.1"
libraryDependencies ++= Seq(
javaJdbc,
javaEbean,
cache,
javaWs
)
maintainer := "Me"
packageSummary := "Example project"
packageDescription in Debian := "Longer description"
daemonUser in Customer := "custom-user"
正如你可以看到我現在可以設置如daemonUser in Customer
。在Play控制檯中,我可以看到它正確地與inspect customer:daemonUser
一起應用。我可以用activator customer:packageBin
創建一個.deb包。 但包幾乎是空的,不包含應用程序:
$ dpkg-deb -c target/play-java_1.0-SNAPSHOT_all.deb
drwxr-xr-x root/root 0 2014-10-06 22:08 ./
drwxr-xr-x root/root 0 2014-10-06 22:08 ./usr/
drwxr-xr-x root/root 0 2014-10-06 22:08 ./usr/share/
drwxr-xr-x root/root 0 2014-10-06 22:08 ./usr/share/play-java/
drwxr-xr-x root/root 0 2014-10-06 22:08 ./universal/
drwxr-xr-x root/root 0 2014-10-06 22:08 ./universal/tmp/
drwxr-xr-x root/root 0 2014-10-06 22:08 ./universal/tmp/bin/
-rw-r--r-- root/root 64 2014-10-06 22:08 ./universal/tmp/bin/debianprerm
-rw-r--r-- root/root 137 2014-10-06 22:08 ./universal/tmp/bin/debianpostinst
lrwxrwxrwx root/root 0 2014-10-06 22:08 ./usr/share/play-java/logs -> /var/log/play-java
每客戶額外的配置去或者它不工作,我想象中的方式方法是什麼?
有沒有不同的方法來達到我需要的,例如與子項目?
我不太確定擴展是什麼(儘管我希望它會像你認爲的那樣:))。映射丟失。嘗試如下:客戶中的映射= =(在Debian中映射).value – Muki 2014-10-07 22:45:30
@Muki不,對不起,恐怕問題會變得更深。源代碼甚至沒有編譯,所以它看起來像原始'debian:packageBin'任務的依賴關係沒有被繼承。很顯然,我誤解了'擴展'。 – hfs 2014-10-08 20:00:40