score:8

Accepted answer

With Playframework 2.0 it's pretty simple. Just follow the tutorial http://www.playframework.org/documentation/2.0/ScalaTodoList

With Play you don't need anything else - Play already contains a server.

IMHO Play is way easier to work with than Lift.

score:1

You can have a look on my Github repo where I have a project that uses Lift and Jetty (as an embedded server). It's not well documented yet but is small enough to grasp how it's working

P4G Server Repo

The server starts from com.p4g.Server object (which is called within com.p4g.Main Application object )

My Lift boostrap object is located in boostrap.liftweb package

BTW, I'm also using ScalaQuery and ScalaZ

score:2

You could use my Maven prototype for Scalatra, then simply import the maven project into Eclipse. Quite nice and you're not forced to use SBT.

https://github.com/fancellu/scalatra-maven-prototype

score:4

Disclaimer: I'm a member of the Vaadin team.

You could also try out Vaadin which works perfectly with Scala, HOWTO here. You can also use Maven or SBT if you want. You should also check out Scaladin, the semi-official Scala wrapper for Vaadin.

Vaadin is a component based library (just one JAR with no dependencies) and it allows you to create your Ajax and HTML5 enabled UI in pure Scala without any HTML templates, RPC, XML or JavaScript.

score:6

EDIT
OK, you asked for it ;-)

Here's a bleeding edge setup for Scalatra with SBT Coffeescript & LESS (see HERE for SBT-Eclipse dependency management)

1) eclipsify a test project

2) in project root create "build.sbt" file:

import AssemblyKeys._
import Keys._

name := "your project name"

version := "1.0"

scalaVersion := "2.9.1"

fork in run := true 

resolvers ++= Seq(
  "Sonatype OSS Snapshots" at "http://oss.sonatype.org/content/repositories/snapshots/",
  "Typesafe repository" at "http://typesafe.artifactoryonline.com/typesafe/ivy-releases/"
) 

seq(webSettings :_*)

seq(assemblySettings: _*)

seq(coffeeSettings: _*)

seq(lessSettings:_*)

(LessKeys.mini in (Compile, LessKeys.less)) := false

libraryDependencies ++= Seq(
  "org.scalatra"    %% "scalatra"   % "2.1.0-SNAPSHOT",
  "org.scalatra"    %% "scalatra-scalate"   % "2.1.0-SNAPSHOT",
  "org.scalatra"    %% "scalatra-lift-json"     % "2.1.0-SNAPSHOT",
  "org.scalatra"    %% "scalatra-anti-xml"  % "2.1.0-SNAPSHOT",
  "org.scalatra"    %% "scalatra-fileupload"    % "2.1.0-SNAPSHOT",
  "org.eclipse.jetty" % "jetty-webapp" % "8.1.0.RC2" % "test;container;provided",
  "javax.servlet"   % "javax.servlet-api" % "3.0.1" % "provided"
)

unmanagedBase <<= baseDirectory { base => base / "/src/main/webapp/WEB-INF/lib/" }

3) create folder "project" in root with plugins.sbt file:

libraryDependencies <+= sbtVersion(v => "com.github.siasia" %% "xsbt-web-plugin" % (v+"-0.2.10"))

resolvers += Resolver.url("sbt-plugin-releases", new URL("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases/"))(Resolver.ivyStylePatterns)

addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.0.0-M3")

addSbtPlugin("com.eed3si9n" % "sbt-assembly" % "0.7.2")

addSbtPlugin("me.lessis" % "coffeescripted-sbt" % "0.2.2")

addSbtPlugin("me.lessis" % "less-sbt" % "0.1.9")

4) from terminal/command prompt start sbt & enable code reloading:

# sbt
> ~;container:start;container:reload /

Open up the Scalatra Book and start hacking ;-)

ORIGINAL
Have to mention it, but a micro framework a la Scalatra, Spray, or Unfiltered might be of interest as well.

That is, if you're not looking for the kitchen sink that Lift and Play provide; if you are looking for the kitchen sink and want to get rolling quickly, Play 2.0 does indeed look quite nice.


Related Query

More Query from same tag