• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: Maven Optimism
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Maven Optimism


  • Subject: Re: Maven Optimism
  • From: Anjo Krank <email@hidden>
  • Date: Wed, 9 Jul 2008 06:16:38 +0200


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@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden
  • Follow-Ups:
    • Re: Maven Optimism
      • From: Henrique Prange <email@hidden>
    • Re: Maven Optimism
      • From: "Pierce T. Wetter III" <email@hidden>
    • Re: Maven Optimism
      • From: Lachlan Deck <email@hidden>
    • Re: Maven Optimism
      • From: Chuck Hill <email@hidden>
    • Re: Maven Optimism
      • From: Anjo Krank <email@hidden>
References: 
 >Maven Optimism (From: Pierce T.Wetter III <email@hidden>)

  • Prev by Date: NPE on project import
  • Next by Date: Re: Maven Optimism
  • Previous by thread: Re: Maven Optimism
  • Next by thread: Re: Maven Optimism
  • Index(es):
    • Date
    • Thread