installing sbt 0.11.0-RC0
run the following commands:
# go to your home directory cd # create a bin folder there (if you don't have it yet) mkdir bin # download the latest sbt wget http://repo.typesafe.com/typesafe/ivy-snapshots/org.scala-tools.sbt/sbt-launch/0.11.0-RC1/sbt-launch.jarnow we need to create a launcher for sbt, create a file called sbt in the bin directory you just created and put the following inside:
java -Xmx512M -jar `dirname $0`/sbt-launch.jar "$@"now run the following commands:
# give execution permissions to the file chmod u+x sbtif you don't have $HOME/bin in your path variable you should add it, for this do the following:
# open $HOME/.bashrc in your favorite text editor vim $HOME/.bashrcand add the following line at the end of it:
export PATH=$PATH:$HOME/binsave and close and run the shell again so it loads the new definitions:
bashyou can check that the path was updated by running:
echo $PATHyou should see something similar to this:
/sbin:/bin:/usr/sbin:/usr/bin:/home/test/binsee that the last one is $HOME/bin (with $HOME expanded to my current home location)
installing scala 2.9.1
if your operating system has this in the package manager then install it from there but since the release is new and some distributions are a little behing we will install it from the download section of the scala site.run the following commands:
# download the latest version of scala wget http://www.scala-lang.org/downloads/distrib/files/scala-2.9.1.final.tgz # unpack it tar -xzf scala-2.9.1.final.tgz # move the folder to the standard place sudo mv scala-2.9.1.final /usr/share/scala # create links so the commands are visible sudo ln -s /usr/share/scala/bin/scala /usr/bin/scala sudo ln -s /usr/share/scala/bin/scalac /usr/bin/scalac sudo ln -s /usr/share/scala/bin/fsc /usr/bin/fsc sudo ln -s /usr/share/scala/bin/sbaz /usr/bin/sbaz sudo ln -s /usr/share/scala/bin/sbaz-setup /usr/bin/sbaz-setup sudo ln -s /usr/share/scala/bin/scaladoc /usr/bin/scaladoc sudo ln -s /usr/share/scala/bin/scalap /usr/bin/scalap
installing the rest
first create the project folder and setup the structure:# define the name of the project PROJNAME=demo # create the direcotry where our project will be mkdir $PROJNAME # get the latest lift with sbt support wget https://nodeload.github.com/lift/lift_24_sbt/tarball/master # extract lift tar -xzf master # remove the downloaded file rm master # copy the basic example to our project directory cp -r lift-lift_24_sbt-*/scala_29/lift_basic/* $PROJNAME # move to our project folder cd $PROJNAME # remove older sbt versions rm sbt sbt.bat sbt-launcher.jar # remove the project structure rm -r project/ # create the new project structure mkdir -p project/projectthe change in the project directory structure is because it changed in sbt 0.11, see more about this here:
https://groups.google.com/forum/#!searchin/simple-build-tool/plugins/simple-build-tool/ep_63fA_Gzk/32xiPzGkCqAJ
create a file at $PROJNAME/build.sbt:
vim build.sbtwith the following content:
seq(webSettings :_*) scalaVersion := "2.9.1" libraryDependencies ++= Seq( "net.liftweb" %% "lift-webkit" % "2.4-M4" % "compile", "net.liftweb" %% "lift-mapper" % "2.4-M4" % "compile", "org.eclipse.jetty" % "jetty-webapp" % "7.5.1.v20110908" % "jetty", "junit" % "junit" % "4.8" % "test", "ch.qos.logback" % "logback-classic" % "0.9.26", "org.scala-tools.testing" %% "specs" % "1.6.9" % "test", "com.h2database" % "h2" % "1.3.160" )create a file at $PROJNAME/project/plugins.sbt:
vim project/plugins.sbtwith the following content:
resolvers ++= Seq( "Web plugin repo" at "http://siasia.github.com/maven2", Resolver.url("Typesafe repository", new java.net.URL("http://typesafe.artifactoryonline.com/typesafe/ivy-releases/"))(Resolver.defaultIvyPatterns) ) addSbtPlugin("com.github.siasia" % "xsbt-web-plugin" % "0.1.1")now run:
sbtwhen you get to the console write:
jetty-runnote that the first time it will take a while, that's because it's downloading lot of stuff and compiling some other things, after the first run everything becomes faster.
after a moment some information will appear, after that navigate to:
http://localhost:8080and play with the app.
generating a war file to deploy in web containers
just run:sbt package-warto test you can run:
sbt testnote that the new version of jetty changed namespace from org.mortbay.* to org.eclipse.* so some code may be broken.
some extra packages
here are some other packages you may want to have, copy the lines your are interested in and add them to $PROJNAME/build.sbt:libraryDependencies ++= Seq( "com.novocode" % "junit-interface" % "0.6" % "test->default", "org.scalatest" % "scalatest_2.9.0" % "1.6.1", "com.sun.jersey" % "jersey-server" % "1.9", "com.sun.jersey" % "jersey-client" % "1.9", "com.sun.jersey" % "jersey-core" % "1.9", "com.sun.jersey" % "jersey-json" % "1.9", "javax.ws.rs" % "jsr311-api" % "1.1.1", "javax.xml.bind" % "jaxb-api" % "2.2" )