sbt-native-packager (0.7.x) を使用する Play フレームワーク (2.3.x) Java プロジェクトで、.deb および .rpm パッケージの顧客固有のバリアントを作成するにはどうすればよいですか?
バイナリ パッケージ (.deb、.zip) は一般的な設定で作成されます。一部のお客様は、仕様に応じて、デーモンのユーザー名やログの場所などの専門分野を必要としています。一般的なパッケージとその設定をそのままにして、たとえば、いくつかのオーバーライドを含む新しい構成を追加して、 でバリアントを取得したいと思いますactivator customer:packageBin
。
私がこれまでに試みたのは、sbt-native-packagerextend
のDebian
構成である新しい SBT 構成を作成することでした。したがって、私の限られた理解では、その設定とタスクを継承する必要があります。次に、たとえばを設定できるようにしたいと思いますdaemonUser in Customer := "custom"
が、それ以外の場合は既存の Debian 設定を使用します。
私build.sbt
のサンプル Play-Java プロジェクト ( activator new
› play-java
):
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"
ご覧のとおり、eg を設定できるようになりdaemonUser in Customer
ました。Play コンソールでは、正しく適用されていることがわかりますinspect customer:daemonUser
。で .deb パッケージを作成できますactivator customer:packageBin
。ただし、パッケージはほとんど空で、アプリケーションは含まれていません。
$ 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
顧客ごとに構成を追加することは正しい方法ですか、それとも私が想像していたようには機能しませんか?
サブプロジェクトなど、必要なものを達成する別の方法はありますか?