Scala + Eclipse + WebServer = Веб-приложение - PullRequest
5 голосов
/ 26 марта 2012

Я хочу разработать довольно простое веб-приложение на Scala с фреймворком Lift или Play, используя Eclipse в качестве среды и некоторый простой веб-сервер, такой как Jetty.Однако, к моему несказанно большому удивлению, я не могу настроить все это для совместной работы.Я также не мог найти разумного простого и понятного руководства о том, как это сделать.После полдня поисков я пришел к выводу, что все вокруг, кажется, используют сочетание sbt / maven и чувствуют, что все нормально, переходя от одного к другому и записывая конфигурационные файлы проекта вручную, просто чтобы начать простой пустой проект.

Нет простого способа создать даже пустой проект.С Java я помню, что это была пара щелчков мыши - чтобы интегрировать веб-сервер в Eclipse, создать простой проект веб-приложения и запустить его прямо оттуда.Куда делась мощь и простота Scala в этом случае?И это только если я хочу попробовать Лифт.Что если я хотел бы попробовать Play, стоит ли мне снова идти по тому же пути?

Есть ли где-нибудь простое и полное руководство, описывающее, как настроить среду, чтобы можно было начать разработку приложений правильно?прочь?

ОБНОВЛЕНИЕ: Я достиг успешной интеграции проекта Play с Eclipse, со всеми возможностями, которые Play имеет из коробки, благодаря совету Питера Гвиазды.Я использую эту настройку для разработки прямо сейчас.Однако мой интересующий вопрос остается открытым: каковы другие способы достижения аналогичной функциональности с другими средами, такими как Lift, Scalatra и другими?

Ответы [ 5 ]

8 голосов
/ 26 марта 2012

С Playframework 2.0 это довольно просто. Просто следуйте инструкциям http://www.playframework.org/documentation/2.0/ScalaTodoList

С Play вам больше ничего не нужно - Play уже содержит сервер.

ИМХО Играть намного проще, чем Lift.

6 голосов
/ 26 марта 2012

РЕДАКТИРОВАТЬ
ОК, вы просили об этом ;-)

Вот передовые настройки для Scalatra с SBT Coffeescript & LESS (см. ЗДЕСЬ дляУправление зависимостями 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) создать папку"project" в корне с файлом plugins.sbt:

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Закажите и начните взламывать; -)

ОРИГИНАЛ
Должен упомянуть об этом, но микро-фреймворк в виде Скалатры, Спрея или Нефильтрованного также может быть интересен.

То есть, если вы не ищете кухонную раковину, которую предоставляют Lift and Play;если вы ищете кухонную раковину и хотите быстро покататься, Play 2.0 действительно выглядит неплохо.

4 голосов
/ 26 марта 2012

Отказ от ответственности: я являюсь членом команды Vaadin.

Вы также можете попробовать Vaadin, который отлично работает со Scala, HOWTO здесь .Вы также можете использовать Maven или SBT, если хотите.Вы также должны проверить Scaladin , полуофициальную оболочку Scala для Vaadin.

Vaadin - это библиотека на основе компонентов (всего один JAR без каких-либо зависимостей), которая позволяет вам создавать Ajaxи интерфейс с поддержкой HTML5 в чистом Scala без каких-либо шаблонов HTML, RPC, XML или JavaScript.

2 голосов
/ 12 сентября 2013

Вы можете использовать мой прототип Maven для Scalatra, а затем просто импортировать проект maven в Eclipse. Довольно хорошо, и вы не обязаны использовать SBT.

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

1 голос
/ 27 марта 2012

Вы можете посмотреть мое репозиторий Github, где у меня есть проект, который использует Lift и Jetty (в качестве встроенного сервера). Это еще недостаточно хорошо документировано, но достаточно мало, чтобы понять, как это работает

Репо P4G-сервера

Сервер запускается из объекта com.p4g.Server (который вызывается внутри объекта приложения com.p4g.Main)

Объект My Lift boostrap находится в пакете boostrap.liftweb

Кстати, я также использую ScalaQuery и ScalaZ

...