2009-08-18 1 views

ответ

21

Для быстрой демонстрации вы можете клонировать или загружать то, что я сделал here.

Минималистичный sbt-appengine-plugin пример с нуля

Clone СБТ-AppEngine-плагин от GitHub

cd mystuff 
git clone git://github.com/Yasushi/sbt-appengine-plugin.git 
cd sbt-appengine-plugin 
sbt 

Опубликовать плагин локально, так что вы можете использовать его в своих проектах

publish-local 
exit 

Создайте каталог для нового проекта

cd .. 
mkdir sbt-appengine-plugin-test 
cd sbt-appengine-plugin-test 
sbt 

Настройка нового проекта

Project does not exist, create new project? (y/N/s) y 
Name: sbt-appengine-plugin-test 
Organization: com.example 
Version [1.0]: 
Scala version [2.7.7]: 2.8.0.Beta1 
sbt version [0.7.3]: 
exit 

Телль SBT о плагине вы хотите использовать

mkdir project/build 
mkdir project/plugins 
nano project/build/project.scala 

проект. scala

import sbt._ 

class AppengineTestProject(info: ProjectInfo) extends AppengineProject(info) 

nano project/plugins/plugins.scala 

plugins.scala

import sbt._ 

class Plugins(info: ProjectInfo) extends PluginDefinition(info) { 
    val a = "net.stbbs.yasushi" % "sbt-appengine-plugin" % "1.1-SNAPSHOT" 
} 

Добавить очень простой сервлет

mkdir -p src/main/scala/com/example 
nano -w src/main/scala/com/example/HelloWorld.scala 

HelloWorld.scala

package com.example; 

import javax.servlet.http.{HttpServlet, HttpServletRequest, HttpServletResponse} 

class HelloWorld extends HttpServlet { 
    override def doGet(request: HttpServletRequest, response: HttpServletResponse$ 
    response.setContentType("text/plain") 
    response.getWriter.println("Hello, world") 
    } 
} 

Добавить еще некоторые конфигурационные файлы

mkdir -p src/main/webapp/WEB-INF 
nano -w src/main/WEB-INF/web.xml 

web.xml

<?xml version="1.0" encoding="ISO-8859-1"?> 
<web-app 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xm$ 
    version="2.5"> 
    <display-name>sbt-appengine-plugin usage example</display-name> 
     <servlet> 
    <servlet-name>helloworld</servlet-name> 
    <servlet-class>com.example.HelloWorld</servlet-class> 
    </servlet> 
     <servlet-mapping> 
    <servlet-name>helloworld</servlet-name> 
    <url-pattern>/</url-pattern> 
    </servlet-mapping> 
</web-app> 


nano -w src/main/WEB-INF/appengine-web.xml 

AppEngine-веб.XML

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0"> 
<!-- Replace this with your application id from http://appengine.google.com -$ 
    <application>hello-world</application> 
    <version>1</version> 
</appengine-web-app> 

И, наконец, запустить SBT и начать проект

sbt 

update 
dev-appserver-start 

Укажите ваш браузер http://localhost:8080/ и вы должны увидеть Привет, мир

dev-appserver-stop 

Чтобы смотреть изменения в исходных файлах Я немного экспериментировал с ~ pr epare-webapp после запуска сервера, но я не получил работу должным образом.

+2

В примере с сервлетами вы хотели поставить знак доллара на строку, которая начинает «переопределять def doGet»? Наверняка, это значит, что это тесная скобка? –

+0

вам нужно расширить проект с помощью свойства JRebel, чтобы посмотреть, как работают изменения. – alexguev

+0

Ясуси/sbt-appengine-plugin, связанный с этим ответом, больше не существует. – Suma

4

Здесь sbt-appengine-plugin на Github, что я пытаюсь работать прямо сейчас. Я опубликую любой прогресс.

+0

The Ясуси/SBT-Appengine-плагин, связанный с этой ANSW к сожалению, не существует. – Suma

2

Вы найдете пример автора плагина здесь: http://gist.github.com/377611

Особенно в конфигурации плагинов, установка 1.1-SNAPSHOT (упомянутые выше) или 2,1-SNAPSHOT (упоминается в SBT-apppengine -plugin README) не работает.

пример показывает:

import sbt._ 

class Plugins(info: ProjectInfo) extends PluginDefinition(info) { 
    val appenginePlugin = "net.stbbs.yasushi" % "sbt-appengine-plugin" % "2.0" from "http://github.com/downloads/Yasushi/sbt-appengine-plugin/sbt-appengine-plugin-2.0.jar" 
} 

И это работало для меня.

2

Вот шаблон проекта с использованием SBT + AppEngine, который может быть использован для начала работы:

https://github.com/mtkopone/sbt-scalatra-appengine-template

Кроме того, вместо того, чтобы опубликовать SBT-Appengine-плагин локально, вы можете использовать следующее Plugins.scala:

import sbt._ 
class Plugins(info: ProjectInfo) extends PluginDefinition(info) { 
    lazy val appEngine = "net.stbbs.yasushi" % "sbt-appengine-plugin" % "2.1" 
    from "http://cloud.github.com/downloads/Yasushi/sbt-appengine-plugin/sbt-appengine-plugin-2.1.jar" 
} 
2

Я написал пример приложения, описывающий, как настроить среду разработки и создания приложения с использованием SBT и App Engine. Он также содержит инструкции по настройке JRebel для получения автоматической перезагрузки, о которой вы мечтаете.

См http://jeremys-scala-example.appspot.com/

Это для SBT 0,7 поэтому его немного устареть.

2

В настоящее время существует новая версия плагина sbt-appengine, которая работает с более новыми версиями SBT (0.10+) в https://github.com/sbt/sbt-appengine. Также есть тривиальное примерное приложение, использующее его по адресу https://github.com/sbt/sbt-appengine.

я просто переделал проект, который был создан с помощью Eclipse:

  • Переместить файлы из Scala SRC/в SRC/основной/Скале.
  • Если у вас есть Java-файлы, переместите их из src/в src/main/java.
  • Перемещение войны/в src/main/webapp.
  • Если у вас есть другие файлы, которые должны быть в WEB-INF/classes, поместите их в src/main/webapp/WEB-INF/classes /.
1

Нашли это сообщение в поиске Google.Поскольку все представленные примеры довольно старые, я создал два примера проектов на основе того, что я нашел в Интернете