Re: Maven Optimism
Re: Maven Optimism
- Subject: Re: Maven Optimism
- From: Chuck Hill <email@hidden>
- Date: Tue, 8 Jul 2008 21:24:19 -0700
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@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden
--
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@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden