sbt-native-packager でお手軽に Scala アプリケーションの deb, rpm, zip を作成する
Scala Advent Calendar 13 日目の記事です。
sbt-native-packager の紹介をします。
https://github.com/sbt/sbt-native-packager
http://www.scala-sbt.org/sbt-native-packager/
サンプルアプリ
実際にいじってみましょう。
Hello というだけの簡単なアプリをパッケージングしてみます。
// src/main/scala/example/Hello.scala package example object Hello { def main(args: Array[String]): Unit = { println("Hello! Scala.") } }
設定
sbt の設定はこんな感じ。特に難しくはないでしょう。
// project/plugins.sbt addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % "0.6.4")
// build.sbt import com.typesafe.sbt.SbtNativePackager._ import com.typesafe.sbt.packager.Keys._ packageArchetype.java_application name := "hello" packageDescription := "hello" maintainer := "tototoshi"
Debian パッケージを作成する
Debian パッケージは debian:packageBin コマンドで作成できます。
いくつか依存しているコマンドがあるようなので(fakeroot とか)怒られたら適宜インストールしてください。
> debian:packageBin
これで target/hello-0.1.0.deb ができるのでインストールしてみます。
> sudo dpkg -i target/hello-0.1.0.deb
$ hello Hello! Scala.
zip アーカイブを作成する
Mac, Windows 向けには zip アーカイブ(universal パッケージ)で配布します。
> universal:packageBin
このコマンドで target/universal/hello-0.1.0.zip ができます。
展開すると bin, lib というディレクトリができていることがわかります。
./bin/hello は sbt-native-packager が勝手に作ってくれた起動スクリプトです。
./bin/hello.bat もあるので Windows でも使えますね。sbt-start-script は Windows は基本的に無視だったので Windows 派はこれだけでうれしいですね。
├── bin │ ├── hello │ └── hello.bat └── lib ├── hello.hello-0.1.0.jar └── org.scala-lang.scala-library-2.10.2.jar
以上、sbt-native-packager の紹介でした。
sbt-start-script の後継として位置づけされているようなので、sbt-start-script を使っている方は乗り換えを検討してみてください。