2009-08-18 33 views

Respuesta

21

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.

+2

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? –

+0

necesita extender su proyecto con el rasgo JRebel para observar los cambios en funcionamiento. – alexguev

+0

Desafortunadamente, el complemento Yasushi/sbt-appengine-linked de esta respuesta ya no existe. – Suma

4

Aquí hay un sbt-appengine-plugin en Github que estoy tratando de poner en práctica en este momento. Publicaré cualquier progreso.

+0

El Yasushi/SBT-appengine-plugin vinculado de esta Answ er ya no existe por desgracia. – Suma

2

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

2

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

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.

2

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 /.
1

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