Not sure I understand the problem, but you might want to try <skip> instead of <exclude>. <skip> is "do not include those files in this particular module, but another module might include them" whereas <exclude> is "do not include those files, never ever" (AFAICT).
I've never had to deal with such exclusions for test classes though: when compiling the app, simply do not put the test classes in the classpath. It very much depends how you build project (Ant vs. Make vs. whatever) and how you organize your files (separate src/ vs. test/, or src/main vs. src/test, folders vs. everything in the same folder)
Finally, note that if you want to "exclude each variant of Test except TestGWT" then it should be enough to <include>**/*TestGWT.java</include> instead.