Anjo: 1   Maven:  0

:-P


On Jul 8, 2008, at 9:16 PM, Anjo Krank wrote:


Am 09.07.2008 um 02:05 schrieb Pierce T.Wetter III:

To give you some examples, for the current Wonder Ant builds, between build.xml files, generic.xml, build.properties files, .classpath and .patternset files, there are 5320 lines of build configuration information in the current Wonder build. The equivalent pom files are 2447 lines, which is not only more efficient, but includes more information to help avoid the jarmeggedon/jarhell problem.

Rubbish.

First, the build files are *way* lighter:

macbook:build ak$ wc build-doc.xml build.xml default.properties ~/ Wonder/build.xml generic.xml
    158     383    7291 build-doc.xml
    814    2168   40453 build.xml
     23      64     524 default.properties
     88     241    3358 /Volumes/Home/Wonder/build.xml
    502    1547   24262 generic.xml
   1585    4403   75888 total

All other files are simply a convenience in case some nut wants to build the individual jars. In particular, all individual build files are only symlinks to Build/build/build-<type>.xml and derive their values from a build.properties in that directory.

Also, you shouldn't *really* count the ~/Wonder/build.xml which is again only a convenience that allows you to build only the stages you want without using "ant -f Build/build/generic.xml foo.bar foo.baz"

These 1500 lines build *all* of Wonder in the way you specify, with the values you specify and the order you specify. *And* they allow you to specify your own builds with just a build property and a symlink to a build file. You could also use includes or or add your own customizations, but the tasks they do are very light.

Attached below is an example.

Second, the individual build files build way more projects:

macbook:Wonder ak$ find . -name build.xml|wc
     67      67    2775
macbook:Wonder ak$ find . -name pom.xml|wc
     56      56    2121

So while the difference is only 600 lines:

macbook:Wonder ak$ wc `find . -name pom.xml`|tail -1
   2152    2438   66007 total

It's still more than zero (if someone would consider this a measure at all).

Thirdly from what I've seen, someone needs to change all these files whenever we bump a version. All of Ulrichs commits so far where these xml fixes. All *I* need to do is set one property.

Fourth, adding a project typically requires five lines in Build/ build/build.xml to add it to the correct group and some props. I might consider moving these props from the build file to a build.properties and making Build/build/build.xml only specify the inter-related deps.

I'll grant you one point for the commons-logging versions, but I use neither ERJGroups or EROpenID. If I were and I'd be bothered, I'd figure out a way to keep them using only one.

So far we've seen that maven is neither more terse nor more powerful (at least in a way that would mean something to me).

The other issues I have with it is that I actually *need* the flexibility in deployment structure. In some projects I *don't* want all-embedded builds as that stuff goes out of hand with 7 apps*all the frameworks. The resulting release tops 250M. So I want some of them embed only some jars. Show me how this works with maven *without* writing any "goals" or "mojos".

So in summary, maven may or may not be nice. But I've been building Wonder with the build files for 7 years now and they haven't really changed a lot in this time. They do the roughly the same as some 20MB tool chain where you *still* have to write java plugins for.

I'll leave the conclusions to you.

Cheers, Anjo

Example:

<project name="FrameworkBuild" default="all" basedir=".">
   <xmlproperty file=".project"/>
   <property name="project.name" value="${projectDescription.name}" />
   <property file="build.properties" />

   <target name="clean">
<ant antFile="Build/build/build.xml" target="$ {project.name}.all" dir="../../../">
           <property name="build.action" value="clean" />
       </ant>
   </target>
   <target name="build">
<ant antFile="Build/build/build.xml" target="$ {project.name}.all" dir="../../../">
           <property name="build.action" value="build" />
       </ant>
   </target>
   <target name="install">
<ant antFile="Build/build/build.xml" target="$ {project.name}.all" dir="../../../">
           <property name="build.action" value="install" />
       </ant>
   </target>
   <target name="web">
<ant antFile="Build/build/build.xml" target="$ {project.name}.all" dir="../../../">
           <property name="build.action" value="web" />
       </ant>
   </target>
   <target name="all" depends="clean, build, install, web" />
</project>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/chill%40global-village.net

This email sent to [EMAIL PROTECTED]


--

Practical WebObjects - for developers who want to increase their overall knowledge of WebObjects or who are trying to solve specific problems.
http://www.global-village.net/products/practical_webobjects





_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [EMAIL PROTECTED]

Reply via email to