Wie sbt mit Google App Engine benutzen?
-
18-09-2019 - |
Frage
hat versucht, jemand zu Setup sbt mit Google App Engine zu arbeiten? Ich träume von Entwicklungs-Server Auto-Nachladen nach Quelle Änderungen verwenden.
Lösung
Für eine schnelle Demo können Sie klonen oder herunterladen, was ich getan habe hier .
Eine minimalistische sbt-appengine-Plugin Beispiel von Grund auf neu
Klonen Sie die sbt-appengine-Plugin von GitHub
cd mystuff
git clone git://github.com/Yasushi/sbt-appengine-plugin.git
cd sbt-appengine-plugin
sbt
Veröffentlichen Sie das Plugin lokal, so dass Sie es in Ihren eigenen Projekten verwenden können,
publish-local
exit
Erstellen Sie ein Verzeichnis für ein neues Projekt
cd ..
mkdir sbt-appengine-plugin-test
cd sbt-appengine-plugin-test
sbt
Konfigurieren Sie das neue 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 über das Plugin die Sie verwenden möchten
mkdir project/build
mkdir project/plugins
nano project/build/project.scala
project.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"
}
Fügen Sie ein sehr einfaches 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")
}
}
Fügen Sie einige weitere Konfigurationsdateien
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>
Und schließlich sbt laufen und starten Sie das Projekt
sbt
update
dev-appserver-start
Gehen Sie mit Ihrem Browser auf http: // localhost: 8080 / und Sie sollten sehen Hallo, Welt
dev-appserver-stop
Um Änderungen in Quelldateien beobachte ich ein wenig mit ~ bereiten-Webapp nach dem Starten des Servers experimentiert habe, aber ich habe es nicht richtig bekommen zu arbeiten.
Andere Tipps
Hier ist eine sbt-appengine-Plugin auf Github, dass ich versuche gerade jetzt an die Arbeit. Ich werde jeden Fortschritt veröffentlichen.
Sie ein Beispiel vom Autor des Plugins finden Sie hier: http://gist.github.com/377611
Vor allem in der Plugins Konfiguration die Einstellung von 1.1-SNAPSHOT (siehe oben) oder 2,1-Schnappschusses (im sbt-apppengine-Plugin Readme erwähnt) hat nicht funktioniert.
Das Beispiel zeigt:
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"
}
Und das funktionierte für mich.
Hier ist ein Template-Projekt mit sbt + appengine die verwendet werden können, um loszulegen:
https://github.com/mtkopone/sbt-scalatra-appengine-template
Auch anstatt die SBT-appengine-Plugin lokal zu veröffentlichen, können Sie die folgend in Plugins.scala verwenden:
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"
}
Ich schrieb eine Beispielanwendung beschreibt, wie eine Entwicklungsumgebung einzurichten und eine Anwendung erstellen, SBT und App-Engine. Es enthält auch Anweisungen zum JRebel Einrichten das Auto zu bekommen Nachladen von Ihnen träumen.
Siehe http://jeremys-scala-example.appspot.com/
Es ist für SBT 0.7 so ist es ein wenig veraltet.
Es gibt jetzt eine neue Version der SBT-appengine Plugin, das mit neueren Versionen von SBT (0.10+) unter https://github.com/sbt/sbt-appengine.
I umgewandelt nur ein Projekt, das mit Eclipse erstellt wurde:
- Verschieben scala-Dateien von src / bis src / main / scala.
- Wenn Sie Java-Dateien haben, bewegen sie von src / zu src / main / java.
- Nach Krieg / zu src / main / webapp.
- Wenn Sie andere Dateien, die in WEB-INF / classes sollten am Ende, so dass sie in src setzen / main / webapp / WEB-INF / classes /.
diesen Beitrag in der Google-Suche gefunden. Da alle bereitgestellten Beispiele sind ziemlich alt ich zwei Beispielprojekte erstellt, basierend auf, was ich gefunden online
-
Beispiel GAE App in Scala geschrieben mit Scalatra 2.0.5 , Scala 2.10.3 und SBT 0,13 https://github.com/cppexpert/scalatra-google-app-engine-app
-
Beispiel GAE App in Scala geschrieben Unfiltered 0,7 , Scala 2.10.3 und SBT 0,13 https://github.com/cppexpert/sample-scala-google-app -Motor-App