On Wednesday, June 6, 2012 8:38:04 AM UTC+2, James Nelson wrote:
>
> I wouldn't be opposed to having differing rules for the GWT SDK 
>> package downloadable at code.google.com and the Maven artifacts. 
>> AFAIK, the original idea of bundling them into gwt-user.jar (and 
>> gwt-dev.jar) was to make things simpler for users (just put gwt-dev 
>> and gwt-user in the classpath).  
>
> For everyone using artifacts from "The Central Repository" (Maven, 
>> Ivy, Gradle, etc.), bundled dependencies hurt more than they help. 
>>
>
> For unfamiliar users, having everything bundled up into a single massive 
> jar does reduce barrier to entry.
> For anyone with a remotely complex build, being able to pick and choose 
> dependencies can be of vital importance.
> Aggressive bundling and excessive repackaging can lead to major bloat and 
> potential classpath-order problems,
> but just adding one jar is the simplest way to get started.
>
> So, this suggests that gwt-user could be made a bloated super-jar, with 
> validation and json et al. builtin by jarring in maven.
> Build this jar from gwt-core, validation, json, elemental, etc. artifacts, 
> but also export these artifacts independently, including a sparse 
> gwt-core.jar.
>

That's the plan, but GWT isn't yet mavenized ;-)
(I intend to work on it this summer)
 

> Anyone who doesn't want the bloated omni-jar can take the sparse-jar and 
> declare dependencies manually, then export only what they need to the 
> server,
> while everyone else can just carry on like normal.
>

I'm not sure the uber-jars should be deployed as Maven artifacts. If you're 
using Maven, it doesn't really matter whether it's a single JAR or a set of 
JARs from transitive dependencies, and uber-jars are more harmful than not. 
The uber-jars should IMO only be packaged within the downloadable GWT SDK.
When (if?) GWT will be mavenized, then the GWT SDK should be built from the 
deployed Maven artifacts (using the maven-shade-plugin and 
maven-assembly-plugin); contrary to what's done today of extracting the 
Maven artifacts out of the GWT SDK.
 

> In maven, what's in gwt-user now would become gwt-core, and replace 
> gwt-user with a pom stub that just bundles up the omni gwt-user.jar.
> gwt-core would be a kernel module representing c.g.g.core.Core + all the 
> .gwt.xml and interfaces / utilities needed to build the gwt environment;
> the maven build for core could still suck in all the required dependencies 
> to run with packaging pom, and just export a jar/gwtar in release stage.
>

I'm not sure I understand. To me, gwt-user in Maven, if/when the user 
libraries are modularized, should become a "grouping dependency", as 
described here 
http://www.sonatype.com/books/mvnref-book/reference/pom-relationships-sect-pom-best-practice.html#pom-relationships-sect-grouping-deps
 

> For IDE / GPE, let it be known that gwt-user is the deprecated way to get 
> up and running quickly,
> and gwt-core + jars_you_need is the advanced way to get up to max 
> performance.
>

Are you suggesting the GWT SDK has gwt-user and all of 
gwt-core+jars_you_might_need?
or that gwt-core et al. will only be published on Central?
I'd favor the latter, it would relegate the GWT SDK to a "quick start" 
bundle for people who want to quickly try out GWT, or a bundle providing 
uber-jars for people who don't use a build system with dependency 
resolution (Maven/Gradle/Ivy/etc.) and don't want to download all the 
smaller JARs one by one from Central (which would be fine for small or 
legacy projects; new+big projects are almost all using a build system with 
dependency resolution built-in, so there's no need providing all those 
small JARs in a downloadable zip bundle); and it would make the GWT SDK 
much smaller.

It may be more work to maintain, and gwt-user.jar updates can only be 
> issued with a stable set of dependencies bundled,
> but at least the component projects and artifacts can be updated 
> independently in maven central, and then by hand in user classpath;
> that way, if there is an update to request factory or elemental or 
> widgetFrameworkXYZ, the sub-modules can release updates without waiting on 
> a version release.
>

I'm really not sure this is a good thing.
1. AFAIK, gwtar files are currently dependent upon the version of the GWT 
Compiler that produced them, so you shouldn't generally pick components 
with different versions (just like currently you should not use a gwt-user, 
gwt-dev and gwt-servlet from different versions)
2. "user" components are likely to depend on new features of the "dev" 
parts (mostly the GWT Compiler)
In the end, it can quickly become a mess.
If there are "urgent" fixes in, say, elemental

Request Factory is kind of a different beast, as it has a stable protocol, 
so you can very well have servers and clients running different versions. 
What matters then is that you use the "requestfactory-gwt" artifact with 
the same version as the other GWT components.

But well, that's a discussion for post-2.5 anyway.

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

Reply via email to