Java framework for Google App Engine
Java JavaScript
Failed to load latest commit information.
src/main updated readme and copyright Oct 1, 2012
.gitignore Support GAE SDK 1.5.3 Sep 11, 2011
COPYING updated license to LGPL Oct 5, 2010
COPYING.LESSER updated readme and copyright Oct 1, 2012 make jappstart more up to date Jan 15, 2012 make jappstart more up to date Jan 15, 2012

Getting Started Guide

jappstart is a Java framework for Google App Engine built on Spring, Spring Security, and Sitemesh. The project aims to be the starting point for Google App Engine Java applications. It's not a framework in the traditional sense -- rather it is designed to provide a solid foundation for GAE/Java applications that can be easily extended by developers.


  • Appstats Support
  • Google AJAX Library API (jQuery)
  • Gravatar Integration
  • JRebel Support
  • Local Development Console Support (http://localhost:8080/_ah/admin)
  • Maven Support
    • CSS/JS minification via the yuicompressor-maven-plugin
    • Uses the maven-gae-plugin
  • Remote API/Bulk Loader Support
  • Sitemesh Integration
  • Spring 3
    • JPA support
    • JSON/AJAX integration (Jackson)
    • JSR-303 validation
    • Localization support
  • Spring Security 3
    • Authentication
    • Expression based access control
    • Fully integrated with the App Engine Datastore and Memcache
    • Login/create account functionality with e-mail confirmation
    • Remember Me
    • Support for hierarchical roles
  • Static Error Handler Support
  • Task Queue Support
  • URL Rewrite Integration


  • Goole App Engine SDK for Java 1.7.0
  • jQuery 1.7.1
  • Maven GAE Plugin 0.9.2
  • Spring 3.1.0
  • Spring Security 3.1.0

Configure Property Files

Configure the following properties in,, and


  • See Sending Mail for details regarding e-mail address restrictions.
  • JSAPI keys can be obtained here.

Configure Settings

Create a settings.xml and a settings-security.xml in your local .m2 folder. See Maven - Password Encryption for instructions on how to encrypt your GAE password.

<!-- settings.xml -->
<settings xmlns=""

      <id></id> <!-- this should match the property and is the GAE application id -->
      <username></username> <!-- GAE username -->
      <password>encryptedpass</password> <!-- Encrypted GAE password -->

<!-- settings-security.xml -->
  <master>masterpass</master> <!-- Encrypted master password -->


  • Run mvn clean package -P local to create a new local build
  • Run mvn gae:run -P local to run locally
  • Run mvn gae:stop -P local to stop the local jetty server
  • Run mvn clean package -P dev to create a new dev build
  • Run mvn gae:deploy -P dev to deploy to your dev app engine app
  • Run mvn clean package -P prod to create a new prod build
  • Run mvn gae:deploy -P prod to deploy to your prod app engine app


To demonstrate the localization functionality just append the following to any url:

/some/url?locale=en_US or /some/url?locale=tl_PH. 

To support additional locales just create a new and set the new locale via:


JRebel Usage

  • Install the JRebel Nightly Build.
  • Define a REBEL_HOME environment variable
  • Run mvn clean compile -P local to create a new local build
  • Run mvn gae:run -P local-jrebel to run locally with JRebel support

Remote API/Bulk Loader Usage

Below is an example of how to use the bulk loader to copy all data from the production server to the local development server. Omit the "--kind" option to dump/restore all kinds. See this for more info.

Backup: download_data --application=<app-id> --kind=UserAccount --url=https://<app-id> --filename=backup.dat

Restore: upload_data --application=<app-id> --kind=UserAccount --url=http://localhost:8080/remote_api --filename=backup.dat

Google Plugin for Eclipse Usage

See the Google App Engine Blog.


Copyright (C) 2010-2012 Taylor Leese

This file is part of jappstart.

jappstart is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

jappstart is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with jappstart. If not, see