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/
sbt-native-packager ã¨ã¯
rpm, deb, universal(zip) ããã±ã¼ã¸ãç°¡åã«ä½ãã sbt ãã©ã°ã¤ã³ã§ãã
ãµã³ãã«ã¢ããª
å®éã«ããã£ã¦ã¿ã¾ãããã
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.
ãã§ããã
rpm ã¯è©¦ãã¦ãªããã© rpm:packageBin ã使ãã°åºæ¥ãããã§ãã
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 ã使ã£ã¦ããæ¹ã¯ä¹ãæããæ¤è¨ãã¦ã¿ã¦ãã ããã