standard prices google for engine docs app google-app-engine scala sbt

prices - ¿Cómo usar sbt con Google App Engine?



google cloud app engine prices (7)

¿Alguien ha intentado configurar sbt para que funcione con Google App Engine? Sueño con usar la recarga automática del servidor de desarrollo después de los cambios de origen.


Ahora hay una nueva versión del complemento sbt-appengine que funciona con las nuevas versiones de SBT (0.10+) en https://github.com/sbt/sbt-appengine . También hay una aplicación de muestra trivial que la usa en https://github.com/sbt/sbt-appengine .

Acabo de convertir un proyecto que fue creado con Eclipse:

  • Mueva los archivos de scala de src / a src / main / scala.
  • Si tiene archivos java, muévalos de src / a src / main / java.
  • Mueve war / a src / main / webapp.
  • Si tiene otros archivos que deberían terminar en WEB-INF / classes, póngalos en src / main / webapp / WEB-INF / classes /.

Aquí hay un sbt-appengine-plugin en Github que estoy tratando de poner a trabajar ahora mismo. Voy a publicar cualquier progreso.


Aquí hay un proyecto de plantilla que usa sbt + appengine que puede usarse para comenzar:

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

Además, en lugar de tener que publicar el complemento sbt-appengine localmente, puedes usar 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" }



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

Especialmente en la configuración de complementos, la configuración de 1.1-SNAPSHOT (mencionada anteriormente) o 2.1-SNAPSHOT (mencionada en el archivo README de sbt-apppengine-plugin) no funcionó.

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


Escribí una aplicación de ejemplo que describe cómo configurar un entorno de desarrollo y crear una aplicación utilizando SBT y el motor de la aplicación. También incluye instrucciones sobre cómo configurar JRebel para obtener la recarga automática que soñaste.

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

Es para SBT 0.7 por lo que es un poco fuera de fecha.


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

Un sbt-appengine-plugin minimalista de sbt-appengine-plugin desde cero

Clona el complemento sbt-appengine de GitHub

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

Publique el complemento localmente para que pueda usarlo 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

Cuéntale a sbt sobre el plugin que quieres usar

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

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

Agrega 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 finalmente ejecuta sbt y comienza el proyecto.

sbt update dev-appserver-start

Dirija su navegador a http://localhost:8080/ y debería ver Hello, world

dev-appserver-stop

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