I went through the resulting pom by hand to compare the most current versions of all the datanucleus and maven-gae-plugin with what was available from their repos. That got me past the issue in this thread. I'm attaching the resultant pomfile.
The generated code does error in other ways on "perform tests" so I couldn't do an end-to-end test, but the problem isn't roo itself.
Cannot have a primary key of type java.lang.Long and be a child object Child.; nested exception is javax.persistence.PersistenceException: Error in meta-data for field Child.id : Cannot have a primary key of type java.lang.Long and be a child object
So the resulting code evidently needs massaging. Could roo be self-aware to avoid this? If I have time, I'll dig deeper open a more thorough bug report/ feature request. Meanwhile, I had to revert to non-roo to make my deadline, and I already had a steep enough learning curve having gwt issues, being new to app engine, and learning a new domain.
Since GAE defaults to what they call "owned relations" (entities put in the same entity group). You can change the relation to "unowned" and there is no such restriction (either set @Unowned on the relation fields or, using the very latest code v2.1.0 you can set persistence property "datanucleus.appengine.relationDefault" set to "unowned"). At the end of the day that restriction is well publicised in GAE docs, so yes the problem is indeed Roo, since it purports to provide code ready to use with GAE; raise a bug on them