¿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 fuente.¿Cómo usar sbt con Google App Engine?
Respuesta
Para una demostración rápida puede clonar o descargar lo que he hecho here.
Un minimalista sbt-appengine-plugin ejemplo desde cero
clonar el SBT-appengine-plugin desde GitHub
cd mystuff
git clone git://github.com/Yasushi/sbt-appengine-plugin.git
cd sbt-appengine-plugin
sbt
Publicar el plug-in 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
Tell SBT sobre el plugin que desea utilizar proyecto
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"
}
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 un poco más archivos de configuración
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 SBT, finalmente, ejecutar 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 vigilar cambios en los archivos fuente He experimentado un poco con ~ pr epare-webapp después de iniciar el servidor, pero no lo he hecho funcionar correctamente.
Aquí hay un sbt-appengine-plugin en Github que estoy tratando de poner en práctica en este momento. Publicaré cualquier progreso.
El Yasushi/SBT-appengine-plugin vinculado de esta Answ er ya no existe por desgracia. – Suma
Encontrará un ejemplo por el autor del plugin aquí: http://gist.github.com/377611
Especialmente en la configuración de los plugins, el establecimiento de 1.1-SNAPSHOT (mencionado anteriormente) o 2,1-INSTANTÁNEA (mencionado en el SBT-apppengine -plugin README) 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í.
Aquí es 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"
}
me escribió 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 la recarga automática que sueña.
Ver 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 complemento sbt-appengine que funciona con las versiones más recientes de SBT (0.10+) en https://github.com/sbt/sbt-appengine. También hay una aplicación de muestra trivial que lo usa en https://github.com/sbt/sbt-appengine.
Acabo de convertir un proyecto creado con Eclipse:
- archivos Mover Scala de src/src/main/Scala.
- Si tiene archivos java, muévalos de src/a src/main/java.
- Move war/to src/main/webapp.
- Si tiene otros archivos que deberían terminar en WEB-INF/classes, colóquelos en src/main/webapp/WEB-INF/classes /.
Encontré esta publicación 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 GAE aplicación
Muestra escrito en Scala usando Scalatra 2.0.5, Scala 2.10.3 y SBT 0,13 https://github.com/cppexpert/scalatra-google-app-engine-app
Muestra GAE aplicación escrito en Scala usando Unfiltered 0.7, Scala 2.10.3 y SBT 0,13 https://github.com/cppexpert/sample-scala-google-app-engine-app
- 1. cómo comenzar a usar Google app-engine?
- 2. ¿Para qué puedo usar Google App Engine?
- 3. Google app engine & CDN
- 4. Google App Engine Locking
- 5. ¡Juego! 2.0 y Google App Engine
- 6. Google App Engine Geohashing
- 7. Google-app-engine NDB
- 8. Google App Engine: get_or_create()?
- 9. Google App Engine
- 10. ¿Google App Engine es compatible con ftp?
- 11. Google App Engine en Silverlight
- 12. ¿Se puede usar frameworks Java EE con Google App Engine?
- 13. Google App Engine: autenticación personalizada
- 14. GeoModel con Google App Engine - consultas
- 15. Jinja2 en Google App Engine
- 16. Google Maps y Google App Engine
- 17. yaml en Google App Engine con index.html
- 18. Servicios web con Google App Engine
- 19. debería dejar Google App Engine?
- 20. Google App Engine: módulo JSON
- 21. Técnicas de paginación con Google App Engine
- 22. Google App Engine JDO 3
- 23. web.py en Google App Engine
- 24. Cómo usar el método HTTP DELETE en Google App Engine?
- 25. Comentarios sobre disponibilidad con Google App Engine
- 26. ClassNotFoundException con Google App Engine para Java
- 27. Web Scraping con Google App Engine
- 28. ImportError en Google App Engine con lxml
- 29. ¿Cómo importar módulos en Google App Engine?
- 30. Google App Engine en Google Apps Domain
En el ejemplo de servlet, ¿quiso poner el signo de dólar en la línea que comienza con "anular def doGet"? Sin duda, ¿se supone que sea un grupo cercano? –
necesita extender su proyecto con el rasgo JRebel para observar los cambios en funcionamiento. – alexguev
Desafortunadamente, el complemento Yasushi/sbt-appengine-linked de esta respuesta ya no existe. – Suma