Aplikasi Web di Scala Menggunakan sbt 0.10.0

Posted on June 19, 2011

0


Artikel ini adalah catatan yang merupakan terusan dari catatan saya yang kemaren (silahkan dibaca di https://www.facebook.com/note.php?note_id=10150284078246807 atau di https://bambangpdp.wordpress.com/2011/06/12/membuat-aplikasi-web-dengan-scala-servlet-dan-sbt/). Jika di artikel tersebut saya menggunakan sbt 0.7.7, sekarang saya akan menggunakan sbt 0.10.0 yang merupakan versi stabil terbaru. Ada beberapa perubahan yang lumayan mendatangkan kebingungan:

  1. Website dari sbt sudah berpindah, dari http://code.google.com/p/simple-build-tool/ ke https://github.com/harrah/xsbt/wiki.
  2. Task untuk proyek web sekarang terpisah menjadi suatu plugin dan dokumentasinya benar-benar kurang (itu sebabnya saya menulis ini :-D). Nama plugin untuk task ini adalah xsbt-web-plugin, bisa diakses di https://github.com/siasia/xsbt-web-plugin

Beberapa perubahan yang bisa saya dokumentasikan dari catatan saya untuk yang versi 0.7.7 seperti yang dijelaskan di atas adalah:

  1. Saat membuat proyek baru, hanya terdapat direktori project dan target. Direktori untuk source code harus dibuat sendiri (src/main/* dan src/test/*).
  2. Tidak perlu membuat project/IntroBuild.scala karena sudah disatukan di $PROJECT_HOME/build.sbt.
  3. File project/build.properties tetap dipertahankan dan hanya berisi versi dari sbt
  4. Untuk instalasi plugin, cukup menggunakan project/plugins/build.sbt (direktori plugins dibuat sendiri).

Berikut ini adalah isi dari file-file yang diperlukan serta berbagai perubahan yang diperlukan:

$PROJECT_HOME/build.sbt

name := "Servlet Introduction using Scala and sbt 0.10.0"
version := "1.0"
scalaVersion := "2.9.0-1"
organization := "bpdp.name"
resolvers += "Typesafe Repository" at "http://repo.typesafe.com/typesafe/akka-repo-cache"
libraryDependencies ++= Seq(
  "se.scalablesolutions.akka" % "akka-actor" % "1.1.2",
  "junit" % "junit" % "4.8" % "test",
  "javax.servlet" % "servlet-api" % "2.5",
  "org.mortbay.jetty" % "jetty" % "6.1.26" % "jetty"
)
seq(WebPlugin.webSettings :_*)

Catatan:

  • Baris berisi resolvers dan se.scalablesolutions.akka di atas boleh dihapus jika tidak memerlukan akka.
  • seq(WebPlugin.webSettings :_*) berasal dari xsbt-web-plugin

project/build.properties

sbt.version=0.10.0

project/plugins/build.sbt

resolvers += "Web plugin repo" at "http://siasia.github.com/maven2"
//Following means libraryDependencies += "com.github.siasia" %% "xsbt-web-plugin" % <sbt version>
libraryDependencies <+= sbtVersion("com.github.siasia" %% "xsbt-web-plugin" % _)

Struktur direktori src

.
|-- main
|   |-- java
|   |-- resources
|   |-- scala
|   |   `-- IntroServlet.scala
|   `-- webapp
|       `-- WEB-INF
|           `-- web.xml
`-- test
|-- java
|-- resources
`-- scala

Seperti biasa, jika sudah siap, dari prompt sbt, kerjakan reload dan update. That’s all folks, happy hacking with {Scala|sbt}!