Now that I've had a few days to start using with Google App Engine's Java support, some patterns are emerging and it's becoming clearer what the lifecycle elements of an App Engine application is. Here's the initial list of goals of what I'd like to see in a GAE Maven Plugin:
- gae:run - analogous to jetty:run. Runs a WAR project on the GAE dev appserver. Ideally has all the same reloading features that we know and love from the Jetty plugin.
- gae:start / gae:stop - this might be accomplished by creating a Cargo adapter for GAE's dev appserver.
- gae:update - Deploys a project to GAE.
- gae:generate-appenginexml - Generate the appengine-web.xml file.
- gae:enhance-classes - perform the necessary DataNucleus byte code enhancement.
But the big one is some kind of processing that will let you know if your application uses classes not in the App Engine whitelist. The application I (perhaps foolishly) ported was an image manipulation application that uses some AWT classes internally. And a number of people have run into the Spring's dependency upon JNDI when JPA is present. Neither of these issues came up when running the dev appserver locally. Even if they had, it'd be great to discover these types of issues at compile time, instead of at run time.
Anyone else have good goal ideas? Post them in the comments.