Ответ заключается в использовании промежуточного «общего» проекта. Этот проект содержит классы, написанные на простом Java, и будут корректно работать на сервере и на любом клиенте.
Затем создаются два других проекта, как вы описали выше: проект сервера и проект клиента. Каждый из них будет зависеть от общего проекта в качестве библиотеки, а затем GWT можно будет включить в клиентском проекте и App Engine в серверном проекте.
При сборке серверного проекта необходимо соблюдать осторожность, чтобы включить выходные данные клиентского проекта - компилируемый JS должен присутствовать в сгенерированной войне выходных данных App Engine, в том же месте, где он был ранее. Это будет зависеть от того, как вы настроили свой проект раньше.