Pregunta

¿Alguien ha tratado de SBT configuración para trabajar con Google App Engine? Sueño con el uso de servidor de desarrollo de auto-recarga después de los cambios de código.

¿Fue útil?

Solución

Para una demostración rápida puede clonar o descargar lo que he hecho aquí .

A SBT-appengine-plugin ejemplo desde cero

Clonar la SBT-appengine-plugin de GitHub

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

Publicar el plugin de forma local para que pueda utilizarlo en sus propios proyectos

publish-local
exit

Crear un directorio para un nuevo proyecto

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

Configurar el nuevo proyecto

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

Dile sbt sobre el plugin que desea utilizar

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

project.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"
}

Añadir un servlet muy simple

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")
  }
}

Añadir algunos archivos de configuración más

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-web.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>

Y por último ejecutar SBT e iniciar el proyecto

sbt

update
dev-appserver-start

Punto de su navegador para http: // localhost: 8080 / y debería ver Hola, mundo

dev-appserver-stop

Para observar los cambios en los archivos de origen que he experimentado un poco con ~ prepare-webapp después de iniciar el servidor, pero no he conseguido que funcione correctamente.

Otros consejos

Encontrará un ejemplo por el autor del plugin aquí: http://gist.github.com/377611

Especialmente en la configuración plugins, el ajuste de 1,1-SNAPSHOT (mencionado anteriormente) o 2,1-SNAPSHOT (mencionado en el README SBT-apppengine-plugin) no funcionaba.

El ejemplo muestra:

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"
}

Y esto funcionó para mí.

Aquí hay un proyecto de plantilla mediante SBT + appengine que se puede utilizar para empezar:

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

Además, en lugar de tener que publicar el SBT-appengine-plugin localmente, puede utilizar lo siguiente en 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"  
}

escribí una aplicación de ejemplo que describe cómo configurar un entorno de desarrollo y crear una aplicación que utiliza SBT y motor de aplicación. También incluye instrucciones sobre cómo configurar JRebel para obtener el auto recarga que sueñas.

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

Es por SBT 0.7 así que es un poco fuera de fecha.

Ahora hay una nueva versión del plugin SBT-appengine que trabaja con las nuevas versiones de SBT (0.10+) a https://github.com/sbt/sbt-appengine . También hay una aplicación de ejemplo trivial de usarlo en https://github.com/sbt/sbt-appengine.

Acabo de convertir un proyecto creado con Eclipse:

  • Mover archivos Scala de src / a src / main / Scala.
  • Si tiene archivos de Java, moverlos de src / src / main / java.
  • Mover guerra / a src / main / webapp.
  • Si usted tiene otros archivos que debe terminar en WEB-INF / classes, los puso en src / main / webapp / WEB-INF / classes /.

Se han encontrado este blog en la búsqueda de Google. Dado que todos los ejemplos proporcionados son bastante antiguos creé dos proyectos de la muestra en base a lo que he encontrado en Internet

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top