Scala + Eclipse + WebServer =一个Web应用程序

non*_*com 5 scala web-applications scala-ide

我想在Scala中开发一个相当简单的Web应用程序,使用Lift或Play框架,使用Eclipse作为环境和一些简单的Web服务器,如Jetty.然而,令我无法形容的惊讶的是,我无法将整个事情设置为一起工作.我也找不到任何明智而简单明了的如何做到这一点的指南.经过半天的搜索,我发现周围的每个人似乎都使用混合的sbt/maven,感觉可以从一个移植到另一个并手动编写项目配置文件,只是为了得到一个简单的空白项目.

创建一个空项目没有简单的简单方法.使用Java我记得只需点击几下 - 将Web服务器集成到Eclipse中,创建一个简单的Web应用程序项目并从那里运行它.在这种情况下,Scala的强大功能和简洁性在哪里?只有当我想试试Lift时才会这样.如果我想尝试播放怎么办?如果我再次走同样的道路怎么办?

有没有一个简单而完整的指南,描述如何设置环境,以便可以立即开始开发应用程序?

更新:由于Peter Gwiazda的建议,我已经与Eclipse进行了成功的Play项目集成,具有Play开箱即用的所有功能.我正在使用此设置进行开发.但是,我感兴趣的问题仍然是:与其他框架(如Lift,Scalatra等)实现类似功能的其他方法是什么?

Pio*_*zda 8

使用Playframework 2.0,它非常简单.只需按照教程 http://www.playframework.org/documentation/2.0/ScalaTodoList

使用Play,您不需要任何其他内容 - Play已包含服务器.

恕我直言游戏比提升更容易使用.


vir*_*yes 6

编辑
好了,你问了它;-)

这是使用SBT Coffeescript和LESS的Scalatra的最前沿设置(参见HERE for SBT-Eclipse依赖管理)

1)使测试项目黯然失色

2)在项目根目录中创建"build.sbt"文件:

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/" }
Run Code Online (Sandbox Code Playgroud)

3)使用plugins.sbt文件在root中创建文件夹"project":

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")
Run Code Online (Sandbox Code Playgroud)

4)从终端/命令提示符启动sbt并启用代码重新加载:

# sbt
> ~;container:start;container:reload /
Run Code Online (Sandbox Code Playgroud)

打开Scalatra书并开始黑客攻击;-)

ORIGINAL
不得不提一下,但Scalatra,Spray或Unfiltered的微框架也可能会引起关注.

也就是说,如果您不是在寻找Lift and Play提供的厨房水槽; 如果你正在寻找厨房水槽,并希望快速滚动,Play 2.0确实看起来很不错.