I don’t know how many times I had to start over and over again, searching for the latest versions, searching for “how to make” the Google Eclipse Plugin, eclipse and maven work together.
The problem is: too many tools that don’t seem to like each other fighting over project layout and classpath. Java EE packaging specs and GWT specialities coming from DevMode don’t really make things easier. If you were not a pro in all of this, you ended up with a mess. I have seen it too often.
Since m2e integration things started getting better. And finally, using recent versions from the following official update sites, it started working flawlessly. Even the DevMode/ classpath issue that made us patch the Jetty launcher past year is solved!
I’ll try to keep this posting here up-to-date, so you won’t have to read through all the docs, tips, tricks comments from here and here again and again.
What you need:
http://download.eclipse.org/technology/m2e/releases
http://download.eclipse.org/m2e-wtp/releases/
I am using the latest stable releases from eclipse.org. Well, not always, I am going as stable as possible: the actual wtp integration is still in incubation… but works…
Talking numbers, this are the version numbers I used here:
I have installed a few m2e connectors I required for other non GWT projects, I think they are not needed for a GWT project. Just for the curious:
M2E connectors are a bridge between Maven and Eclipse. When a maven plugin is bound to a lifecycle phase like generate-sources, or process-sources it becomes a part of Eclipse build. (source)
Don’t use the archetype. And if you do, remove the maven-war-plugin plugin. I am using the copyWebapp configuration option in the gwt-maven-plugin to copy the
stuff into the folder used by the DevMode and build system located at
.
By the way, defaults work fine now, there is no need to setup/ fix the path configs for the plugin anymore. If you use M2E to update the project configuration things will work.
If you are sure your config is right, and you are absolutely sure you have at least the versions mentioned above, try killing your eclipse config with
This will leave you with a completely missconfigured project in eclipse. Let m2e update the project again. Sometimes I get the error that m2e did fail setting up the project description. Ignore it, do it again.
Guava is a very useful library, and it is quite easy to use it (partially) within the GWT client code.
First, add the guava.jar and the guava-gwt.jar libs to your project. If you are using maven, just add the following dependency to you pom.xml:
For Ivy or Gradle, just have a loot at here.
Once the libs are in your classpath, you can inherit the required modules in your GWT module:
or, as in my case, just add
which does all of the above…
I am not going into all the guava goodies here, but…
Here is another snippet for copy and paste: how to create conditional CSS entries in a CSS resource. In this special case I am adding a liner color transition to a “box”…
Finally, the issue CellTable/DataGrid wrapped by TabLayoutPanel (non active tab): Table not filled seems to be fixed by 2.5 RC1. Just in case you are stuck with a previous version of GWT for now, try using the following workaround:
The cell table widgets in GWT use a client bundle to store all the required resources. This is great in reducing the number of round-trips for loading the required css and image resources, and allows us to place images and css fragments where they belong: close to the components.
But how do we change the styles? Simply subclass the client bundle, replace the images/ styles partially or completely, and they give it to the cell widget.
Here is a small example:
Now, you have to create the cell table: