Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
deploy your webapp to appengine using sbt.
Scala Java
branch: master

This branch is 113 commits ahead of goneflyin:master

0.6.2

latest commit 47ed51c31a
eugene yokota eed3si9n authored
Failed to load latest commit information.
notes 0.6.2
project fix scripted test
src 0.6.2
.gitignore first commit
LICENSE license
README.md 0.6.2
build.sbt 0.6.2
crossbuilding.sbt 0.6.1
ls.sbt 0.6.1
scripted.sbt fix scripted test

README.md

sbt-appengine is a sbt 0.10+ port of the awesome Yasushi/sbt-appengine-plugin.

requirements

export environment variables (JREBEL_PATH is optional).

export APPENGINE_SDK_HOME=/Applications/appengine-java-sdk-1.6.2.1
export JREBEL_PATH=/Applications/ZeroTurnaround/JRebel/jrebel.jar

setup for sbt 0.13

put the following in the project/appengine.sbt:

addSbtPlugin("com.eed3si9n" % "sbt-appengine" % "0.6.2")

and the following in appengine.sbt:

libraryDependencies += "org.mortbay.jetty" % "jetty" % "6.1.22" % "container"

appengineSettings

setup for sbt 0.12

put the following in the project/plugins.sbt:

addSbtPlugin("com.eed3si9n" % "sbt-appengine" % "0.5.0")

resolvers += "spray repo" at "http://repo.spray.cc"

for build.sbt:

libraryDependencies += "org.eclipse.jetty" % "jetty-webapp" % "7.6.8.v20121106" % "container"

appengineSettings

for build.scala:

import sbtappengine.Plugin._
import AppengineKeys._

lazy val example = Project("web", file("web"),
  settings = buildSettings ++ appengineSettings ++
             Seq( // your settings here
             ))

usage

deploy

you can deploy your application like this:

> appengineDeploy

development server

to (re)start the development server in the background:

> appengineDevServer

to redeploy development server continuously:

> ~ appengineDevServer

hot loading!

to hot reload development server continuously, set JREBEL_PATH and:

> appengineDevServer
> ~ packageWar

by default development server runs in debug mode. IDE can connect to it via port 1044.

appengineDevServer lifecyle hooks

to run a code on start/stop of dev server:

(gae.onStartHooks in gae.devServer in Compile) += { () =>
  println("hello")
}

(gae.onStopHooks in gae.devServer in Compile) += { () =>
  println("bye")
}

backend support

you can deploy your backend application(s) like this:

> appengineDeployBackends

to start a backend instance in the cloud:

> appengineStartBackend <backend-name>

to stop a backend instance:

> appengineStopBackend <backend-name>

DataNucleous enhancer support (experimental)

sbt-appengine provides experimental support for DataNucleous enhancer. to use this, include the following in build.sbt:

appengineSettings

appengineDataNucleusSettings

gae.persistenceApi in gae.enhance in Compile := "JDO"

this will call the enhancer automatically on packageWar task. since DataNucleous expects plain Java fields, the entity class looks a bit ugly in Scala:

import javax.jdo.annotations._
import com.google.appengine.api.datastore.Key
import scala.annotation.target.field

@PersistenceCapable
case class Counter(
  @(PrimaryKey @field)
  @(Persistent @field)(valueStrategy = IdGeneratorStrategy.IDENTITY)
  var key: Key,
  @(Persistent @field)
  var count: Int)

sample

note

When trying to launch the dev server with appengine-dev-server, you might run into the following exception: java.lang.RuntimeException: Unable to restore the previous TimeZone. This issue has been resolved in the latest App Engine SDK.

Something went wrong with that request. Please try again.