$headContent
How can I get my classes to refresh without having to restart?

A good option is using the jrebel java agent.

To use jrebel simply run the plugin with the gae.javaAgent option active:

mvn gae:run -Dgae.javaAgent=$REBEL_HOME/jrebel.jar


Can I use the different versions of GAE with the same plugin?

Yes, as of 0.7.0 the plugin's dependencies are non transitive and must always be specified

More clearly: You can now simply change the version of gae-runtime


How do I use an 'unsupported' version of the runtime?

It's simple: In your project's pom, instead of depending on gae-runtime, you can directly depend on the app-engine libraries:

<plugin>
  <groupId>net.kindleit</groupId>
  <artifactId>maven-gae-plugin</artifactId>
  <version>${maven.gae.plugin.version}</version>
  <dependencies>
    <dependency>
      <groupId>net.kindleit</groupId>
      <artifactId>gae-runtime</artifactId>
      <version>SOME_OLD_VERSION</version>
      <type>pom</type>
    </dependency>
    <dependency>
      <groupId>com.google.appengine</groupId>
      <artifactId>appengine-tools-sdk</artifactId>
      <version>1.5.0</version>
    </dependency>
    <dependency>
      <groupId>com.google.appengine</groupId>
      <artifactId>appengine-api-1.0-sdk</artifactId>
      <version>1.5.0</version>
    </dependency>
  </dependencies>
</plugin>

How to use Maven GAE Plugin with Google Eclipse Plugin?

A very good article was written by David Chadler on how to set this up: How to Use Google Plugin for Eclipse with Maven

See the Eclipse section.


How do I configure the local development environment with MAIL-API?

The Java development server does not support sendmail like the Python development server.

However, you can update the configuration settings so e-mails are logged:

<plugin>
  <groupId>net.kindleit</groupId>
  <artifactId>maven-gae-plugin</artifactId>
  <version>${maven.gae.plugin.version}</version>
  <configuration>
    <jvmFlags>
      <jvmFlag>-Dmail.log_mail_level=WARNING</jvmFlag>
      <jvmFlag>-Dmail.log_mail_body=true</jvmFlag>
    </jvmFlags>
    <severity>0</severity>
    <serverId>${server.id}</serverId>
  </configuration>
  <dependencies>
    <dependency>
      <groupId>net.kindleit</groupId>
      <artifactId>gae-runtime</artifactId>
      <version>${gae.runtime}</version>
      <type>pom</type>
    </dependency>
  </dependencies>
</plugin>