2009-08-18 34 views

risposta

21

Per una demo rapida è possibile clonare o scaricare quello che ho fatto here.

uno stile minimalista sbt-appengine-plugin esempio da zero

Clone la SBT-AppEngine-plugin da GitHub

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

Pubblicare il plugin localmente in modo che si può utilizzare nei vostri progetti

publish-local 
exit 

Creare una directory per un nuovo progetto

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

Configurare il nuovo progetto

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 sul plugin che si desidera utilizzare

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

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

Aggiungi un semplice servlet

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

aggiungere alcuni file di configurazione più

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> 

E SBT finalmente correre e avviare il progetto

sbt 

update 
dev-appserver-start 

Point tuo browser per http://localhost:8080/ e si dovrebbe vedere Ciao, mondo

dev-appserver-stop 

da tenere d'occhio cambiamenti nei file sorgente Ho sperimentato un po 'con ~ pr epare-webapp dopo aver avviato il server, ma non ho funzionato correttamente.

+2

Nell'esempio servlet, intendevi mettere il simbolo del dollaro sulla riga che inizia "override def doGet"? Sicuramente, è pensato per essere una parentesi chiusa? –

+0

è necessario estendere il progetto con il tratto di JRebel per controllare che i cambiamenti funzionino. – alexguev

+0

Il plug-in Yasushi/sbt-appengine collegato da questa risposta non esiste più purtroppo. – Suma

4

Ecco uno sbt-appengine-plugin su Github che sto cercando di ottenere al lavoro in questo momento. Posterò qualsiasi progresso

+0

Il Yasushi/SBT-AppEngine-plugin legata da questo risp non esiste più purtroppo – Suma

2

Troverete un esempio dall'autore del plugin qui: http://gist.github.com/377611

Soprattutto nella configurazione plug-in, l'impostazione di 1.1-SNAPSHOT (di cui sopra) o 2.1-SNAPSHOT (menzionato nel SBT-apppengine -plugin README) non ha funzionato.

L'esempio mostra:

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

E questo ha funzionato per me.

2

Ecco un modello di progetto utilizzando SBT + AppEngine che può essere utilizzato per iniziare:

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

Inoltre, invece di dover pubblicare lo sbt-AppEngine-plugin a livello locale, è possibile utilizzare il seguente in 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

ho scritto un esempio di applicazione che descrive come impostare un ambiente di sviluppo e creare un'applicazione utilizzando SBT e App engine. Include anche istruzioni su come configurare JRebel per ottenere il ricaricamento automatico che sogni.

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

E 'per SBT 0.7 quindi è un po' fuori moda.

2

V'è ora una nuova versione del plugin SBT-AppEngine che funziona con le versioni più recenti di SBT (0.10+) a https://github.com/sbt/sbt-appengine. C'è anche una banale app di esempio che la usa allo https://github.com/sbt/sbt-appengine.

Ho appena convertito un progetto che è stato creato con Eclipse:

  • file Sposta Scala da src/src/main/Scala.
  • Se si dispone di file java, spostarli da src/a src/main/java.
  • Sposta war/to src/main/webapp.
  • Se si hanno altri file che dovrebbero finire in WEB-INF/classi, inserirli in src/main/webapp/WEB-INF/classes /.
1

Trovato questo post nella ricerca Google.Dal momento che tutti gli esempi forniti sono abbastanza vecchio ho creato due progetti di esempio in base a quello che ho trovato in rete