5

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

即使是创建一个空项目也没有简单的方法。我记得使用 Java 只需单击几下 - 将 Web 服务器集成到 Eclipse 中,创建一个简单的 Web 应用程序项目并从那里直接运行它。在这种情况下,Scala 的强大功能和简单性哪里去了?只有当我想尝试 Lift 时。如果我也想尝试 Play,我应该再次走同样的路吗?

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

更新:感谢 Peter Gwiazda 的建议,我已经成功地将 Play 项目与 Eclipse 集成,具有 Play 开箱即用的所有功能。我现在正在使用此设置进行开发。但是,我感兴趣的问题仍然存在:还有哪些其他方法可以使用其他框架(如 Lift、Scalatra 等)实现类似功能?

4

5 回答 5

8

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

使用 Play,您不需要任何其他东西 - Play 已经包含服务器。

恕我直言,Play 比 Lift 更容易使用。

于 2012-03-26T10:49:13.923 回答
6

编辑
好的,你要求它;-)

这是带有 SBT Coffeescript 和 LESS 的 Scalatra 的前沿设置(请参阅此处了解 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/" }

3)使用 plugins.sbt 文件在根目录中创建文件夹“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")

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

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

打开Scalatra Book并开始 hacking ;-)

ORIGINAL
不得不提一下,但是像 Scalatra、Spray 或 Unfiltered 这样的微框架也可能很有趣。

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

于 2012-03-26T14:18:28.703 回答
4

免责声明:我是 Vaadin 团队的成员。

您也可以在这里试用与 Scala 完美配合的 Vaadin,HOWTO。如果需要,您也可以使用 Maven 或 SBT。您还应该查看Scaladin,它是 Vaadin 的半官方 Scala 包装器。

Vaadin 是一个基于组件的库(只有一个没有依赖关系的 JAR),它允许您在纯 Scala 中创建支持 Ajax 和 HTML5 的 UI,而无需任何 HTML 模板、RPC、XML 或 JavaScript。

于 2012-03-26T12:07:37.403 回答
2

您可以将我的 Maven 原型用于 Scalatra,然后只需将 maven 项目导入 Eclipse。非常好,您不必被迫使用 SBT。

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

于 2013-09-11T22:11:46.417 回答
1

您可以查看我的 Github 存储库,其中我有一个使用 Lift 和 Jetty(作为嵌入式服务器)的项目。它还没有很好的文档记录,但它足够小,可以掌握它是如何工作的

P4G 服务器回购

服务器从 com.p4g.Server 对象开始(在 com.p4g.Main Application 对象中调用)

我的 Lift boostrap 对象位于 boostrap.liftweb 包中

顺便说一句,我也在使用 ScalaQuery 和 ScalaZ

于 2012-03-27T11:41:29.037 回答