Scalatra — это легкая основанная на Scala микро-фреймворк, которую можно использовать для создания высокопроизводительных веб-сайтов и API. В этом уроке мы начнем с установки скалатры и импортируем наш тестовый проект в Eclipse.
SBT и giter8
Прежде чем начать, вам необходимо установить несколько инструментов (я предполагаю, что у вас установлен JDK 1.6+). Я дам вам краткие инструкции по установке, а расширенную версию этого можно найти на следующей странице скалатры ( http://www.scalatra.org/getting-started/first-steps.html ). Этот подход должен работать для большинства сред, однако для меня он не работал … Он загружал старые версии giter8 и старую версию sbt. Для sbt я использовал macports, чтобы получить последнюю версию:
port install sbt
И я также скачал giter8 вручную.
curl https://raw.github.com/n8han/conscript/master/setup.sh | sh cs n8han/giter8
Эта последняя команда установит g8 в ваш каталог / bin. Я проверил это с этой версией G8:
~/bin/g8 giter8 0.5.0 Usage: g8 [TEMPLATE] [OPTION]... Apply specified template. OPTIONS -b, --branch Resolves a template within a given branch --paramname=paramvalue Set given parameter value and bypass interaction. Apply template and interactively fulfill parameters. g8 n8han/giter8 Or g8 git://github.com/n8han/giter8.git Apply template from a remote branch g8 n8han/giter8 -b some-branch Apply template from a local repo g8 file://path/to/the/repo Apply given name parameter and use defaults for all others. g8 n8han/giter8 --name=template-test
Создать начальный проект
Перейдите в корневой каталог, в котором вы храните свои проекты, и выполните следующее:
[email protected]:~/dev/scalatra/firststeps$ g8 scalatra/scalatra-sbt organization [com.example]: org.smartjava package [com.example.app]: org.smartjava.scalatra name [scalatra-sbt-prototype]: hello-scalatra servlet_name [MyScalatraServlet]: HelloScalatraServlet scala_version [2.9.1]: version [0.1.0-SNAPSHOT]:
Это создаст папку hello-scalatra в каталоге, в котором находится проект.
./build.sbt ./project ./project/build.properties ./project/plugins.sbt ./README.md ./src ./src/main ./src/main/resources ./src/main/resources/logback.xml ./src/main/scala ./src/main/scala/org ./src/main/scala/org/smartjava ./src/main/scala/org/smartjava/scalatra ./src/main/scala/org/smartjava/scalatra/HelloScalatraServlet.scala ./src/main/scala/Scalatra.scala ./src/main/webapp ./src/main/webapp/WEB-INF ./src/main/webapp/WEB-INF/layouts ./src/main/webapp/WEB-INF/layouts/default.scaml ./src/main/webapp/WEB-INF/views ./src/main/webapp/WEB-INF/views/hello-scalate.scaml ./src/main/webapp/WEB-INF/web.xml ./src/test ./src/test/scala ./src/test/scala/org ./src/test/scala/org/smartjava ./src/test/scala/org/smartjava/scalatra ./src/test/scala/org/smartjava/scalatra/HelloScalatraServletSpec.scala
Чтобы проверить, все ли работает, зайдите в этот каталог и используйте sbt, чтобы запустить приложение из sbt с «container: start». Это загрузит много вещей и, наконец, запустит приложение:
[email protected]:~/dev/scalatra/firststeps/hello-scalatra$ sbt [info] Loading project definition from /Users/jos/Dev/scalatra/firststeps/hello-scalatra/project [info] Set current project to hello-scalatra (in build file:/Users/jos/Dev/scalatra/firststeps/hello-scalatra/) > container:start [info] jetty-8.1.5.v20120716 [info] NO JSP Support for /, did not find org.apache.jasper.servlet.JspServlet [info] started o.e.j.w.WebAppContext{/,[file:/Users/jos/Dev/scalatra/firststeps/hello-scalatra/src/main/webapp/]} [info] started o.e.j.w.WebAppContext{/,[file:/Users/jos/Dev/scalatra/firststeps/hello-scalatra/src/main/webapp/]} 15:12:44.604 [pool-6-thread-4] INFO o.scalatra.servlet.ScalatraListener - Initializing life cycle class: Scalatra [info] started o.e.j.w.WebAppContext{/,[file:/Users/jos/Dev/scalatra/firststeps/hello-scalatra/src/main/webapp/]} 15:12:44.727 [pool-6-thread-4] INFO o.f.s.servlet.ServletTemplateEngine - Scalate template engine using working directory: /var/folders/mc/vvzshptn22lg5zpp7fdccdzr0000gn/T/scalate-5609005579304140836-workdir [info] Started [email protected]:8080 [success] Total time: 1 s, completed Sep 7, 2012 3:12:44 PM > [success] Total time: 1 s, completed Sep 7, 2012 3:10:05 PM
Чтобы проверить, все ли правильно, наведите браузер на localhost: 8080, и вы увидите следующий экран:
Импорт в Eclipse
Я обычно разрабатываю с Eclipse, поэтому в этом случае давайте убедимся, что мы можем редактировать исходный код в Eclipse. Для этого мы можем использовать плагин sbt eclipse. Добавить этот плагин очень легко. Перейдите в папку «project» и добавьте следующее (с пустой строкой перед ним) в файл plugins.sbt.
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.1.0")
Когда вы в следующий раз запустите sbt, вы увидите много загружаемого материала. Из sbt запустите ‘eclipse’ и файлы конфигурации eclipse (.classpath и .project) будут созданы. Теперь запустите Eclipse IDE, и вы сможете импортировать только что созданный проект (убедитесь, что вы также установили scala-ide для Eclipse ).
Теперь мы можем запустить контейнер и позволить sbt прослушивать изменения в наших ресурсах.
$ sbt > container:start > ~ ;copy-resources;aux-compile
Каждый раз, когда мы сохраняем файл в Eclipse, sbt будет копировать и перекомпилировать ресурсы. Таким образом, мы можем напрямую видеть наши измененные файлы в браузере. Откройте файл HelloScalatraServlet и измените текст приветствия. Если вы сохраните это, sbt перезагрузит приложение и вы сразу увидите измененные файлы.
Вот и все для этого урока!