2009-08-18 8 views

Odpowiedz

21

Aby uzyskać szybką wersję demonstracyjną, możesz sklonować lub pobrać to, co zrobiłem: here.

minimalistyczny sbt-appengine-plugin przykład od podstaw

sklonować SBT-AppEngine-plugin z GitHub

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

Publish plugin lokalnie, dzięki czemu można go używać w swoich projektach

publish-local 
exit 

Utwórz katalog dla nowego projektu

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

skonfigurować nowy projekt

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 o wtyczce chcesz użyć

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

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

Dodaj bardzo prosty aplet

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

Dodać trochę więcej plików konfiguracyjnych

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> 

I wreszcie uruchomić SBT i rozpocząć projekt

sbt 

update 
dev-appserver-start 

należy wpisać w przeglądarce http://localhost:8080/ i powinieneś zobaczyć Hello, world

dev-appserver-stop 

Aby obserwować zmiany w plikach źródłowych trochę eksperymentowałem z ~ pr epare-webapp po uruchomieniu serwera, ale nie udało mi się go poprawnie uruchomić.

+2

W przykładzie serwletu, czy chcesz umieścić znak dolara na linii, która zaczyna "nadpisać def doGet"? Z pewnością ma to być ścisły wspornik? –

+0

musisz przedłużyć projekt za pomocą cechy JRebel, aby uzyskać dostęp do zmian w działaniu. – alexguev

+0

Wtyczka Yasushi/sbt-appengine połączona z tą odpowiedzią niestety nie istnieje. – Suma

4

Oto sbt-appengine-plugin na Githubie, który próbuję teraz uruchomić. Będę publikować wszelkie postępy.

+0

The Yasushi/SBT-AppEngine-plugin związaną z tym POUFNY er niestety już nie istnieje. – Suma

2

Znajdziesz przykład przez autora pluginu tutaj: http://gist.github.com/377611

Szczególnie w konfiguracji wtyczek, ustawienie 1.1-SNAPSHOT (wymienione powyżej) lub 2,1-SNAPSHOT (wymienionego w SBT-apppengine -plugin README) nie działa.

Przykład pokazuje:

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

I to pracował dla mnie.

2

Oto projekt szablon używając SBT + AppEngine, które mogą być wykorzystane, aby zacząć:

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

Ponadto, zamiast opublikować SBT-AppEngine-plugin lokalnie, można użyć następujących w 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

pisałem przykładową aplikację opisujący jak skonfigurować środowisko programistyczne i tworzenia aplikacji przy użyciu SBT i app Engine. Zawiera również instrukcje dotyczące konfigurowania JRebel, aby uzyskać automatyczne przeładowanie, o jakim marzysz.

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

Jest dla SBT 0,7 więc jej trochę nieaktualne.

2

Istnieje teraz nowa wersja wtyczki sbt-appengine, która działa z nowszymi wersjami SBT (0.10+) pod numerem https://github.com/sbt/sbt-appengine. Jest też trywialna przykładowa aplikacja, używająca go pod adresem https://github.com/sbt/sbt-appengine.

Właśnie przekształcony projekt, który został stworzony z Eclipse:

  • plików Move scala z src/do src/main/scala.
  • Jeśli masz pliki Java, przenieś je z src/do src/main/java.
  • Przenieś wojnę/do src/main/webapp.
  • Jeśli masz inne pliki, które powinny znaleźć się w WEB-INF/classes, umieść je w src/main/webapp/WEB-INF/classes /.
1

Znaleziono ten wpis w wyszukiwarce Google.Ponieważ wszystkie przewidziane przykłady są dość stare Stworzyłem dwa przykładowe projekty oparte na tym, co znalazłem w Internecie