GWT-maven-plugin can generate asyncrhonous interface for your GWT-RPC services. Considering the following Server-side RPC interface :

  public interface HelloWorldService
  {
      String helloWorld( String message );
  }

.. the plugin will automagically generate the asynchrounous interface used on client-side code. Thanks to this feature, you don't have to write and maintain this boring code. As a bonus, the generated code includes an utility class to retrieve the RPC proxy from client-side code :

public interface HelloWorldServiceAsync
{
    String helloWorld( String message, AsyncCallBack<String> callback );
      
    public static class Util 
    { 
        public static ContactPrefereServiceAsync getInstance()
        ...
    }
}

To enable this feature, simply include the generateAsync goal in your POM.xml :

<project>
  [...]
  <build>
    <plugins>
      [...]
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>gwt-maven-plugin</artifactId>
        <version>1.0</version>
        <executions>
          <execution>
            <goals>
              <goal>generateAsync</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      [...]
    </plugins>
  </build>
  [...]
</project>

To avoid full scan of project sources, the plugin uses a naming convention for RPC services. By default, it only checks **/*Service.java source files. You can override this convention using the servicePattern parameter.

The rpcExtension is used to configure the URL pattern used on the server to publish the GWT-RPC services. It will be used by the generator to create helper code (see later).

The failOnError parameter can also be helpfull is you have issue with the generator.