Hi Rajeev [Cc: GWT-Contrib],

I saw you created a BuildingWithMaven wiki page earlier today, which I
suppose is about mavenizing the GWT build process.

I thought about it a little these past weeks.

The major pain point IMO is about dependencies, particularly those
that have been patched: ECJ and Flute come to mind.

As we're talking about mavenization, I'd also like to see artifacts
reorganized to favor reuse (dependency) over duplication:
 - common: classes shared between the compiler, server code and user lib
 - requestfactory-shared
 - requestfactory-client: depends on requestfactory-shared
 - requestfactory-server: depends on requestfactory-shared and common
 - requestfactory-apt: depends on requestfactory-shared (and maybe common)
 - gwt-extension-api: provides the API for generators and linkers
 - gwt-compiler: equivalent to the current "compiler.standalone" task
in gwt-dev, depends on common and gwt-extension-api
 - gwt-dev: depends on gwt-compiler, contains the dev-mode, equivalent
to the current gwt-dev feature-wise
 - gwt-shared: everything shared by gwt-user and gwt-servlet today
 - gwt-user: depends on gwt-extension-api and gwt-shared, equivalent
to the current gwt-user feature-wise, minus the server-side code
 - gwt-servlet: depends on gwt-shared and common, equivalent to the
current gwt-servlet feature-wise, minus the request-factory stuff

The only breaking changes would be that gwt-servlet no longer contains
request-factory stuff. That shouldn't break much people, and is only a
matter of adding requestfactory-server as an additional dependency.

The gwt-maven-plugin could depend on gwt-compiler only and dynamically
download gwt-dev only if running GWTTestCase or the dev mode (or
depend directly on gwt-dev as it currently does, that's probably
simpler to implement). The split between gwt-compiler and gwt-dev is
not strictly necessary, but as there's already a "compiler.standalone"
task, I suppose some people have a need for it.

I believe the gwt-user, gwt-servlet and gwt-dev could still be made to
conditionally (using a Maven profile) produce all-in-one JARs as we
know them today, for people not using Maven for their projects.

What do you think?

-- 
Thomas Broyer
/tɔ.ma.bʁwa.je/

-- 
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to