Re: maven.
Re: maven.
- Subject: Re: maven.
- From: Chuck Hill <email@hidden>
- Date: Fri, 3 Apr 2009 10:18:52 -0700
On Apr 3, 2009, at 9:20 AM, Henrique Prange wrote:
Hi Mike,
Mike Schrag wrote:
man, maven people .. i'm trying .. I really am ..
That is really nice to hear. :)
I don't like being the guy who just hates something based on
impressions and not experiences, because I think that's how lots of
people judge WO ... but I'm reading "http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
" -- Which is like "The Introduction to the Overview" and I mostly
already want to kill myself.
You should really start reading the book Maven: Definitive Guide
[1]. It's free and contains most information you need to understand
the basics about Maven in one place. And you don't have to read the
entire book to understand most of the Maven concepts.
The fact that I need to read even part of a book alarms me.
I really don't know what it is about maven, but it's like someone
tried to come up with the most complex solution to these problems
they could. Every sentence just introduces some new
layer -- it's like a build system composed of Matryoshka. I have
the distinct impression that one could solve 75% of this problem
with 10% of the complexity.
If you don't have to write any Maven plug-in, the complexity is
almost imperceptible. In fact, everything will be much more simple.
Much more simple than what? Simpler than not using Maven? Simpler
than the few Ant files that I now have?
Your projects will have the same behavior when you have the same
kind of configuration (most cases).
I have that now, other than external dependancy management. I handle
that with a framework of jars unit to each application, versioned with
the application.
And this configuration can be inherited. You have to write less
configuration and the declarative way of writing Maven configuration
is much more informative.
That works with Ant too. Each new project (app or framework) is:
<project name="ProjectName" default="build" basedir=".">
<import file="../Ant/common.xml"/>
</project>
In Ant you say "how to make the project produce things". In Maven
you say "what the project is". Maven takes care of do what it have
to do, in most cases.
Or is it that you rely on someone else already having done the "how to
make the project produce things" and simply accept that you will
follow their way?
I think Maven's trying to solve 100% of the problem and they get
where they are. All I really want is my ant build file to build or
download dependencies first. I would say I basically want Ivy,
except that kind of pisses me off, too.
As you said, if you only want the dependency management stuff, you
don't need Maven. You want Ivy or Maven Ant Tasks [2].
The Maven dependency management mechanism really shines. But Maven
goes beyond that.
Ivy is like a couple of Maven guys split off to write a different
solution to 98% of the problem instead of 100%.
If you keep studying Maven, you'll realize Ivy solves 10% of the
problem. :)
But what IS the problem? Maven users always say things like "Study it
and you will learn how great it really is". But I have not yet heard
concrete reasons, beyond dependency management, why this is so. Show
me the money.
I think this is the problem with Java vs Ruby people. The Rails
community is happy to put out a framework that is simple and
narrowly focused. It seems to me that the Java community isn't
happy unless every level of the framework is a dependency-injected
pluggable framework for building frameworks. Where's my simple
dependency manager? Where's my ant task that just lets me say:
<dependencies>
<dependency name="log4j" version="1.2.14" source="someMavenRepo"
dest="Libraries"/>
<dependency name="MyCustomFramework" version="latest"
source="myRepo" dest="${wo.local.frameworks}"/>
</dependencies>
Well, using Maven Ant Tasks you will have to add something like that
to your build.xml.
<artifact:dependencies pathId="dependency.classpath">
<dependency groupId="log4j" artifactId="log4j" version="1.2.14"/>
<dependency groupId="your.company" artifactId="MyCustomFramework"
version="1.0-SNAPSHOT"/>
</artifact:dependencies>
It is similar. The repository configuration goes in a separate
section.
Each project has their particularities. Those tools normally try to
provide a solution that is not restricted to toy problems. In most
cases, some kind of complexity must be added to increase the reuse.
IMHO, that is why Eclipse is cool, Maven is cool, Ant is cool and
other Java tools and frameworks are cool.
I am not sure that I would agree that any of them are cool. Free and
widely used, yes. But cool? Ant is horrid. Most Java tools and
frameworks are too. Eclipse... free, powerful, widely used? Yes.
But it has grown into something of a juggernaut.
Because if you can't solve your specific problem with the provided
solution, you just have to make few changes to achieve your goal.
And the base solution can evolve, making your own little
modification even better over time (of course, by means of API
changes and other things that makes us feel really sad).
And you can always produce your own solution. I choose Maven in the
past exactly because I don't want to create proprietary solutions
that only members of my team can understand. When I say proprietary
solution I mean name standards, layout structure, configuration and
etc.
Why? Show me the money.
Ant does everything else I care about. I hate ant, don't get me
wrong, but it's pretty straightforward. I understand Maven is
trying to do a lot more, and that's super great and all, but I
don't WANT that.
So, you will probably be frustrated using it. I choose Maven because
of the concepts behind the tool. Not because of the tool itself. I
wanted the discipline and the restrictions imposed by the Maven
lifecycle. Most of Maven restrictions I found made me improve the
software development process on my company.
That sounds to me like "I chose it for love of technology, not
technical reasons." I eschew complexity in favor of "the simplest
thing that can work". I love simplicity, not technology. The
technology that I use, I use because it is the simplest way to achieve
the result that I want. So if you want to "show me the money", that
is the path.
I'm not saying Maven is perfect or the best tool for every project.
Far way from that. Ferrari is cool, but there are a lot of places
where walking by foot is desired (or the only possible way). You
really have to figure out what you desire first.
I'm not sure MOST people want that. I'm sure SOME people want
that, and they are probably loving it.
As other people have presented doubtful statistics about Ant vs.
Maven in the past, I'm feeling free to show a comparison between Ant
and Maven mailing lists statistics [3] and make a very doubtful
conclusion: people prefer Maven to Ant. :)
Ant subscribers: 969
Maven subscribers: 1774
Ant Total posts: 19011
Maven Total posts: 70980
Ant mean posts / day: 13.45
Maven mean posts / day: 50.30
I can even sort of maybe get behind their project layout .. After
you stare at it for a while, it sort of makes sense why it's like
that.
I didn't like the project layout when I started using Maven. This
kind of discipline "imposed" seems bad and annoying in the
beginning. But after sometime, it make sense and show its benefits.
Anyway. I'm TRYING not to hate, but I am just not feeling it.
As Pascal said to Chuck, maybe I can change your mind at WOWODC. ;)
[1]http://www.sonatype.com/books/maven-book/reference/
[2]http://maven.apache.org/ant-tasks/index.html
[3]http://people.apache.org/~coar/mlists.html
Only if you can show me the money. :-)
Chuck
--
Chuck Hill Senior Consultant / VP Development
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
References: | |
| >maven. (From: Mike Schrag <email@hidden>) |
| >Re: maven. (From: Henrique Prange <email@hidden>) |