0

scala メイン アプリ コードを .deb ファイルとしてパッケージ化しようとしています。アプリは ubuntu マシンでのみ実行されるため、Windows などはあまり気にしません。

現在、最も単純な設定を使用して .deb をコンパイルする最も簡単な方法を見つけるのに苦労しています。jar の依存関係を含めてバンドルする必要がある単純なobject Kernel extends Appscala ファイルがフォルダーにあるとします。src

プロジェクトの現在の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すると、ウィンドウなどに使用されていない変数を非常に多く含める必要があります。これを避けたいと思います。

deb のみのビルドの設定とマッピングを簡素化する方法について何か提案はありますか?

4

1 に答える 1

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. mapGenericMappingsToLinuxmappings in Universalで構成されたすべてのものを取得し、Linux パッケージで Linux に適したものにしようとするフックです。
  3. JavaAppPackaging.settingsmappings in Universalビルド定義を取得し、アプリケーションのデフォルトで構成を自動的に入力します。
  4. JavaServerAppPackaging.debianSettingsバンドルされているデフォルトのアプリケーションをサーバーとして起動できるように、debian 専用の追加設定を追加します。

プラグインの目標の 1 つは、これらの「マッピング」を柔軟に使用して、デフォルトの動作またはオーバーライドを取得できるようにすることです。その方法が十分に文書化されていないだけです。これが役立つことを願っています!

于 2013-12-20T18:22:43.483 に答える