<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Maven 2 vs Ant+Ivy: Revisited</title>
	<atom:link href="http://leshazlewood.com/2010/01/13/maven-2-vs-antivy-revisited/feed/" rel="self" type="application/rss+xml" />
	<link>http://leshazlewood.com/2010/01/13/maven-2-vs-antivy-revisited/</link>
	<description>Where Les is More</description>
	<lastBuildDate>Thu, 26 Apr 2012 02:41:36 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>By: Another Voice</title>
		<link>http://leshazlewood.com/2010/01/13/maven-2-vs-antivy-revisited/comment-page-1/#comment-1596</link>
		<dc:creator>Another Voice</dc:creator>
		<pubDate>Sat, 05 Nov 2011 05:58:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.leshazlewood.com/?p=55#comment-1596</guid>
		<description>Takes 30min to build? Even mid-range projects: 200.000-400.000 loc shouldn&#039;t take THAT long.

Still, I understand your points. But I think all kind of customization for a specific build (custom build plugins) that have to be adjusted and modified during the lifecycle of a project shuold be done with some kind of script language like groovy and checked into the project repository. 

Once that build customization works fine, it can be compiled into a real maven plugin with java and stored in the company maven plugin repo. 

Just my 2 cents</description>
		<content:encoded><![CDATA[<p>Takes 30min to build? Even mid-range projects: 200.000-400.000 loc shouldn&#8217;t take THAT long.</p>
<p>Still, I understand your points. But I think all kind of customization for a specific build (custom build plugins) that have to be adjusted and modified during the lifecycle of a project shuold be done with some kind of script language like groovy and checked into the project repository. </p>
<p>Once that build customization works fine, it can be compiled into a real maven plugin with java and stored in the company maven plugin repo. </p>
<p>Just my 2 cents</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: A</title>
		<link>http://leshazlewood.com/2010/01/13/maven-2-vs-antivy-revisited/comment-page-1/#comment-914</link>
		<dc:creator>A</dc:creator>
		<pubDate>Fri, 18 Feb 2011 22:22:30 +0000</pubDate>
		<guid isPermaLink="false">http://www.leshazlewood.com/?p=55#comment-914</guid>
		<description>Amen.</description>
		<content:encoded><![CDATA[<p>Amen.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Daniel</title>
		<link>http://leshazlewood.com/2010/01/13/maven-2-vs-antivy-revisited/comment-page-1/#comment-708</link>
		<dc:creator>Daniel</dc:creator>
		<pubDate>Wed, 25 Aug 2010 21:54:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.leshazlewood.com/?p=55#comment-708</guid>
		<description>For Maven builds to be reproductible, you must &quot;pin&quot; the version of each and every plugin used (even the &quot;default&quot; ones, like the Java compiler, etc.).

To make matters worse, several plugins have bugs which are only &quot;fixed&quot; in (SVN, CVS, etc) but not released.</description>
		<content:encoded><![CDATA[<p>For Maven builds to be reproductible, you must &#8220;pin&#8221; the version of each and every plugin used (even the &#8220;default&#8221; ones, like the Java compiler, etc.).</p>
<p>To make matters worse, several plugins have bugs which are only &#8220;fixed&#8221; in (SVN, CVS, etc) but not released.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mavenbleh</title>
		<link>http://leshazlewood.com/2010/01/13/maven-2-vs-antivy-revisited/comment-page-1/#comment-701</link>
		<dc:creator>Mavenbleh</dc:creator>
		<pubDate>Wed, 11 Aug 2010 03:47:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.leshazlewood.com/?p=55#comment-701</guid>
		<description>Actually here&#039;s a simple way to describe the problem with Maven: Maven aims for perfection--a development utopia.  It tries to be The Tool To Rule Them All, which can even toast your bread and make you coffee.  Well, we all know that&#039;s not realistic.  It&#039;ll never happen.  Only for the lucky few where it just happens to jive with your requirements and users will it perform well; when you expand that to fit the multitude of different types of development environments, it falls apart.  We also know that trying too hard to find perfection can backfire and lead to worse situations than what we had to start with (thanks for that, Karl Marx)...</description>
		<content:encoded><![CDATA[<p>Actually here&#8217;s a simple way to describe the problem with Maven: Maven aims for perfection&#8211;a development utopia.  It tries to be The Tool To Rule Them All, which can even toast your bread and make you coffee.  Well, we all know that&#8217;s not realistic.  It&#8217;ll never happen.  Only for the lucky few where it just happens to jive with your requirements and users will it perform well; when you expand that to fit the multitude of different types of development environments, it falls apart.  We also know that trying too hard to find perfection can backfire and lead to worse situations than what we had to start with (thanks for that, Karl Marx)&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Mavenbleh</title>
		<link>http://leshazlewood.com/2010/01/13/maven-2-vs-antivy-revisited/comment-page-1/#comment-700</link>
		<dc:creator>Mavenbleh</dc:creator>
		<pubDate>Wed, 11 Aug 2010 03:34:37 +0000</pubDate>
		<guid isPermaLink="false">http://www.leshazlewood.com/?p=55#comment-700</guid>
		<description>See, I think it&#039;s the other way around.  Maven is going to be overkill for any small or mid sized project working in a single office.  The large ones are where it has a -better- defense.  We have a number of projects (not huge, but big enough) that are built with Ant and the build isn&#039;t that complicated.  Maybe 2-4 screens worth of ant script-- how is that a big deal?

I&#039;m sure they&#039;re all over the place, but complaining about Ant builds that are impossible to understand sounds an awful lot like complaining about a project or source code that is impossible to understand.  Ant is like a programming language, if you use it stupidly, it&#039;ll get confusing.  I suppose if you aren&#039;t familiar with how to create an intuitive build process, Maven is more idiot proof... but so are &quot;application builder tools&quot; and their likes. (MS Access, Oracle APEX)

I just can&#039;t see the use in these things (or the problem with doing them in Ant) for a project/team that isn&#039;t huge.

-download dependency source code
(just drop the source jars into svn? also, no worky if you don&#039;t have an internet conn. and... over-use of dependencies is a valid concern.. not something to be encouraged, look at the mess Spring, Spring Security, and other bloated OSS projects have to deal with now. dependencies may help speed things up a little in the short term--but for the &#039;users&#039; of a lib and over the long term, they&#039;re nothing but a bad thing to cause problems)
-run tests
(ant does it fine, if you even need it to, and honestly unless you&#039;re doing a release or commit, mandating the execution of tests every single build can waste time. just test when you need to, testing and building aren&#039;t always done together)
-generate JavaDoc and other documentation
(ant can do it fine. and is it really impossible to &quot;just look&quot; at an ant view in Eclipse and immediately understand how to generate docs by clicking on the task? it couldn&#039;t be easier)
-Start up a test web environment if it is a web product
(install, build/deploy, start? what&#039;s so complicated?)
-view a continuous integration environment
(small teams don&#039;t have the resources to set up, create tests for, and maintain a cont int env, and unless your code base is massive it should be well enough designed that this isn&#039;t a serious need anyway)
-see source control repository details
(other tools do this just fine, not sure what the point is?)
-understand how the project is broken up into modules
(isn&#039;t there documentation or architecture diagrams? and if you&#039;re being tossed into a project with no introduction or assistance, just a &#039;here&#039;s your task, good luck figuring it all out for yourself!&#039; it&#039;s going to suck regardless)

And Maven IS slow. Aren&#039;t compilers and software slow enough as it is without adding extra magic to make the problem worse?</description>
		<content:encoded><![CDATA[<p>See, I think it&#8217;s the other way around.  Maven is going to be overkill for any small or mid sized project working in a single office.  The large ones are where it has a -better- defense.  We have a number of projects (not huge, but big enough) that are built with Ant and the build isn&#8217;t that complicated.  Maybe 2-4 screens worth of ant script&#8211; how is that a big deal?</p>
<p>I&#8217;m sure they&#8217;re all over the place, but complaining about Ant builds that are impossible to understand sounds an awful lot like complaining about a project or source code that is impossible to understand.  Ant is like a programming language, if you use it stupidly, it&#8217;ll get confusing.  I suppose if you aren&#8217;t familiar with how to create an intuitive build process, Maven is more idiot proof&#8230; but so are &#8220;application builder tools&#8221; and their likes. (MS Access, Oracle APEX)</p>
<p>I just can&#8217;t see the use in these things (or the problem with doing them in Ant) for a project/team that isn&#8217;t huge.</p>
<p>-download dependency source code<br />
(just drop the source jars into svn? also, no worky if you don&#8217;t have an internet conn. and&#8230; over-use of dependencies is a valid concern.. not something to be encouraged, look at the mess Spring, Spring Security, and other bloated OSS projects have to deal with now. dependencies may help speed things up a little in the short term&#8211;but for the &#8216;users&#8217; of a lib and over the long term, they&#8217;re nothing but a bad thing to cause problems)<br />
-run tests<br />
(ant does it fine, if you even need it to, and honestly unless you&#8217;re doing a release or commit, mandating the execution of tests every single build can waste time. just test when you need to, testing and building aren&#8217;t always done together)<br />
-generate JavaDoc and other documentation<br />
(ant can do it fine. and is it really impossible to &#8220;just look&#8221; at an ant view in Eclipse and immediately understand how to generate docs by clicking on the task? it couldn&#8217;t be easier)<br />
-Start up a test web environment if it is a web product<br />
(install, build/deploy, start? what&#8217;s so complicated?)<br />
-view a continuous integration environment<br />
(small teams don&#8217;t have the resources to set up, create tests for, and maintain a cont int env, and unless your code base is massive it should be well enough designed that this isn&#8217;t a serious need anyway)<br />
-see source control repository details<br />
(other tools do this just fine, not sure what the point is?)<br />
-understand how the project is broken up into modules<br />
(isn&#8217;t there documentation or architecture diagrams? and if you&#8217;re being tossed into a project with no introduction or assistance, just a &#8216;here&#8217;s your task, good luck figuring it all out for yourself!&#8217; it&#8217;s going to suck regardless)</p>
<p>And Maven IS slow. Aren&#8217;t compilers and software slow enough as it is without adding extra magic to make the problem worse?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Louis</title>
		<link>http://leshazlewood.com/2010/01/13/maven-2-vs-antivy-revisited/comment-page-1/#comment-670</link>
		<dc:creator>Louis</dc:creator>
		<pubDate>Thu, 01 Jul 2010 13:56:17 +0000</pubDate>
		<guid isPermaLink="false">http://www.leshazlewood.com/?p=55#comment-670</guid>
		<description>I think both Ant and Maven are equally painful. I never quite understood why building projects for any Java project is so difficult when I am able to consistently get a Visual Studio solution to build with virtually no effort, time after time, years after I initially created them using the .NET framework.</description>
		<content:encoded><![CDATA[<p>I think both Ant and Maven are equally painful. I never quite understood why building projects for any Java project is so difficult when I am able to consistently get a Visual Studio solution to build with virtually no effort, time after time, years after I initially created them using the .NET framework.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Matt North</title>
		<link>http://leshazlewood.com/2010/01/13/maven-2-vs-antivy-revisited/comment-page-1/#comment-586</link>
		<dc:creator>Matt North</dc:creator>
		<pubDate>Thu, 29 Apr 2010 15:43:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.leshazlewood.com/?p=55#comment-586</guid>
		<description>This was interesting reading, as you could have been writing about the exact process of discovery I&#039;m going through now.

I&#039;m in a corporate environment on a team with multiple java developers, any of whom might in fact need to work on any and all projects at some time or another.

How do you minimize the amount of man-hours needed to maintain project structure, dependencies, and build methodology, and (in our case) do so without a dedicated configuration/build manager?  Really it comes down to: How do you maximize the amount of time your development team has for developing the end product?

The answer is to minimize the amount of time it takes to achieve ancillary function X (efficiency), AND ensure that function X is always achieved the same way from project to project (eliminate duplication of effort, and reduce learning curve by maintaining consistency).

Maven seems to fit that bill nearly perfectly.

Still, not wanting to commit without due-diligence I decided to poke around and see what others have to say.  There seems to be a LOT of criticism around Maven&#039;s rigidity.  Frankly, a lot of it is pure ignorance (Maven&#039;s relatively poor documentation promotes this, unfortunately), but some of it is clearly based on some valid points, and backed up with some detailed experiences.

Truth be told, that has me somewhat concerned.  But it flies in the face of what I&#039;ve already experienced, and there exist a number of other articles such as this one which detail the exact opposite experience.

What it _seems_ to boil down to to me is that developers who are not on a team, and tend to be either the masters of their own projects, and possibly even the only developers, seem to argue against Maven, while people who work on teams (particularly with highly &quot;creative&quot; developers), tend to sing the praises of Maven.

In the end, my concerns are outweighed by three facts: (1) experience with Maven so far has been great (for all the reasons mentioned and more); (2) the initial effort required to implement it is nearly zero; (3) the effort required to stop using Maven if it proves to be a problem is effectively zero -- just stop using it!  We can still go back to Ant if we want to.

I should point out that we are not migrating to Maven from some other established mechanism... right now there is no mechanism (don&#039;t ask).  So there is less potential loss than if we were abandoning some existing system.

Also I have an eye on Gradle -- it&#039;s too young for me to feel comfortable with it (and lacks some features), but if Maven turns out to be too rigid then Gradle seems to provide the benefits of Maven without the rigidity.</description>
		<content:encoded><![CDATA[<p>This was interesting reading, as you could have been writing about the exact process of discovery I&#8217;m going through now.</p>
<p>I&#8217;m in a corporate environment on a team with multiple java developers, any of whom might in fact need to work on any and all projects at some time or another.</p>
<p>How do you minimize the amount of man-hours needed to maintain project structure, dependencies, and build methodology, and (in our case) do so without a dedicated configuration/build manager?  Really it comes down to: How do you maximize the amount of time your development team has for developing the end product?</p>
<p>The answer is to minimize the amount of time it takes to achieve ancillary function X (efficiency), AND ensure that function X is always achieved the same way from project to project (eliminate duplication of effort, and reduce learning curve by maintaining consistency).</p>
<p>Maven seems to fit that bill nearly perfectly.</p>
<p>Still, not wanting to commit without due-diligence I decided to poke around and see what others have to say.  There seems to be a LOT of criticism around Maven&#8217;s rigidity.  Frankly, a lot of it is pure ignorance (Maven&#8217;s relatively poor documentation promotes this, unfortunately), but some of it is clearly based on some valid points, and backed up with some detailed experiences.</p>
<p>Truth be told, that has me somewhat concerned.  But it flies in the face of what I&#8217;ve already experienced, and there exist a number of other articles such as this one which detail the exact opposite experience.</p>
<p>What it _seems_ to boil down to to me is that developers who are not on a team, and tend to be either the masters of their own projects, and possibly even the only developers, seem to argue against Maven, while people who work on teams (particularly with highly &#8220;creative&#8221; developers), tend to sing the praises of Maven.</p>
<p>In the end, my concerns are outweighed by three facts: (1) experience with Maven so far has been great (for all the reasons mentioned and more); (2) the initial effort required to implement it is nearly zero; (3) the effort required to stop using Maven if it proves to be a problem is effectively zero &#8212; just stop using it!  We can still go back to Ant if we want to.</p>
<p>I should point out that we are not migrating to Maven from some other established mechanism&#8230; right now there is no mechanism (don&#8217;t ask).  So there is less potential loss than if we were abandoning some existing system.</p>
<p>Also I have an eye on Gradle &#8212; it&#8217;s too young for me to feel comfortable with it (and lacks some features), but if Maven turns out to be too rigid then Gradle seems to provide the benefits of Maven without the rigidity.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: John Ferguson Smart</title>
		<link>http://leshazlewood.com/2010/01/13/maven-2-vs-antivy-revisited/comment-page-1/#comment-585</link>
		<dc:creator>John Ferguson Smart</dc:creator>
		<pubDate>Mon, 01 Mar 2010 08:08:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.leshazlewood.com/?p=55#comment-585</guid>
		<description>Nice article, Les. You have accurately summed up what a lot of large (and not-so-large) organizations find so appealing about Maven, despite the circulating FUD. And, for the record, your arguments still also apply for agile teams - even agile projects need to be maintained eventually!

Regarding the myth of the automatically updating dependencies quoted in the previous comment, I documented and disproved this rumoured behaviour &lt;a href=&quot;http://www.wakaleo.com/blog/246-maven-mythbusters-maven-automatically-updates-for-every-build&quot; rel=&quot;nofollow&quot;&gt;here&lt;/a&gt;.

Thanks again for a great post!</description>
		<content:encoded><![CDATA[<p>Nice article, Les. You have accurately summed up what a lot of large (and not-so-large) organizations find so appealing about Maven, despite the circulating FUD. And, for the record, your arguments still also apply for agile teams &#8211; even agile projects need to be maintained eventually!</p>
<p>Regarding the myth of the automatically updating dependencies quoted in the previous comment, I documented and disproved this rumoured behaviour <a href="http://www.wakaleo.com/blog/246-maven-mythbusters-maven-automatically-updates-for-every-build" rel="nofollow">here</a>.</p>
<p>Thanks again for a great post!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: DontWasteMyTimeWithMaven</title>
		<link>http://leshazlewood.com/2010/01/13/maven-2-vs-antivy-revisited/comment-page-1/#comment-584</link>
		<dc:creator>DontWasteMyTimeWithMaven</dc:creator>
		<pubDate>Sun, 28 Feb 2010 00:02:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.leshazlewood.com/?p=55#comment-584</guid>
		<description>So what if your dev environment does not have an Internet connection? (Or heck, what if it&#039;s just down or slow one day?) What if you don&#039;t WANT Maven downloading new versions of who knows what without you knowing it beforehand? Or what if one of these &quot;automatically integrated&quot; dependencies breaks your build due to some conflict? The problem with &quot;magic&quot; is that when it breaks, you&#039;re SOL.

Ant can do most everything listed above as Maven benefits, if you really need it to (some &quot;benefits&quot; are just distractions and are of trivial importance in the grand scheme of things..). If you have someone over-engineering your Ant build files making them hard to comprehend, don&#039;t blame the tool, blame the idiot.

Bad move switching to Maven.  Your original decision to use Ant was correct.  Most people dropping Maven are ditching it after using it for a long time (not two days), once they&#039;ve run into a few of those &quot;gotchas&quot; that makes them waste hours or days resolving it. But it takes time to encounter these.

I almost never have to touch our Ant scripts.  Much better spending your time working on the actual product instead of blowing hours (or days) on a tool used to build the product.  Read some of the Maven horror stories out there.  No such stories with Ant.  And they aren&#039;t from &quot;Maven newbies&quot;, either!  I see no reason to use &quot;Maven&quot;--or any project/example that requires it.</description>
		<content:encoded><![CDATA[<p>So what if your dev environment does not have an Internet connection? (Or heck, what if it&#8217;s just down or slow one day?) What if you don&#8217;t WANT Maven downloading new versions of who knows what without you knowing it beforehand? Or what if one of these &#8220;automatically integrated&#8221; dependencies breaks your build due to some conflict? The problem with &#8220;magic&#8221; is that when it breaks, you&#8217;re SOL.</p>
<p>Ant can do most everything listed above as Maven benefits, if you really need it to (some &#8220;benefits&#8221; are just distractions and are of trivial importance in the grand scheme of things..). If you have someone over-engineering your Ant build files making them hard to comprehend, don&#8217;t blame the tool, blame the idiot.</p>
<p>Bad move switching to Maven.  Your original decision to use Ant was correct.  Most people dropping Maven are ditching it after using it for a long time (not two days), once they&#8217;ve run into a few of those &#8220;gotchas&#8221; that makes them waste hours or days resolving it. But it takes time to encounter these.</p>
<p>I almost never have to touch our Ant scripts.  Much better spending your time working on the actual product instead of blowing hours (or days) on a tool used to build the product.  Read some of the Maven horror stories out there.  No such stories with Ant.  And they aren&#8217;t from &#8220;Maven newbies&#8221;, either!  I see no reason to use &#8220;Maven&#8221;&#8211;or any project/example that requires it.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dimitris Menounos</title>
		<link>http://leshazlewood.com/2010/01/13/maven-2-vs-antivy-revisited/comment-page-1/#comment-583</link>
		<dc:creator>Dimitris Menounos</dc:creator>
		<pubDate>Sat, 13 Feb 2010 12:09:50 +0000</pubDate>
		<guid isPermaLink="false">http://www.leshazlewood.com/?p=55#comment-583</guid>
		<description>I get your point about the benefits of the maven conventions on team development. I even have thought the exact things too. However as much I appreciate maven, I cannot let Ant out of my heart as the favorite build tool! That is because I &lt;i&gt;am&lt;/i&gt; a control-freak, and yes, it allows my build to the level of perfection that I want.

I use maven because I have to, but Ant because I want to.</description>
		<content:encoded><![CDATA[<p>I get your point about the benefits of the maven conventions on team development. I even have thought the exact things too. However as much I appreciate maven, I cannot let Ant out of my heart as the favorite build tool! That is because I <i>am</i> a control-freak, and yes, it allows my build to the level of perfection that I want.</p>
<p>I use maven because I have to, but Ant because I want to.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

