Saturday, February 23, 2019

Re: Seeking advice, migrating from Ant to Maven for GWT App build

On Saturday, February 23, 2019 at 7:31:20 AM UTC-5, Thomas Broyer wrote:

Given your description, you could create fewer Maven modules (I'm not saying you should do it, but you could)
* shared, with common.shared, app_a.shared and app_b.shared
* common-client, as a gwt-lib, with common.client, and depending on shared and shared-sources
* app_a, as a gwt-app, with a dependency on common-client and shared (and shared-sources), though that one is also brought transitively through common-client
* app_b, as a gwt-app, with a dependency on common-client and shared (same as app_a)
* server, as a war, with common.server, app_a.server and app_b.server, and a dependency on shared.

OK, that makes sense to me.  3 modules for the 3 gwt bits, then a single shared and server module for those bits.  I think that would be a viable approach...


Note that you could technically also use a single Maven module mixing client and server code, but this means your server-side dependencies are in your client code classpath (compile and "runtime"), and your client-side dependencies are in your server compile classpath (not runtime if you correctly exclude them from your WAR). If that's how you manage your classpaths with Ant, then it could provide an easier migration path to Maven; see https://github.com/gwtproject/gwt/blob/2.8.2/user/src/com/google/gwt/user/tools/templates/maven/pom.xmlsrc for an example setup (this is the template used by GWT's WebAppCreator)

I feel like using your plugin, then glomming everything into single maven module wouldn't be a prudent approach.  I see the inherent benefit of the multi-module structure, just didn't want to deal with the module-bloat that would have occurred in our app with the approach I was considering (you're 5 module suggestion make a lot more sense to me though).


BTW - my main reason for wanting to move to a maven-based build is to manage the dependent jars in the web-inf/lib directory.

If that's your main driver and you're otherwise OK with Ant, then maybe have a look at Ivy.

I haven't been looking at build systems for the past few years and apparently completely missed Ivy.  It does look to be exactly what I'm really looking for in this case.  Thanks so much for the pointer!

I think you've got me pointed in the right direction.  For this situation it's looking like Ivy is probably the right answer for us at this time.
Thanks so much for taking the time to reply!

--
You received this message because you are subscribed to the Google Groups "GWT Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to google-web-toolkit+unsubscribe@googlegroups.com.
To post to this group, send email to google-web-toolkit@googlegroups.com.
Visit this group at https://groups.google.com/group/google-web-toolkit.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment