• 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.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: maven.


  • Subject: Re: maven.
  • From: Henrique Prange <email@hidden>
  • Date: Fri, 03 Apr 2009 21:13:05 -0300

Hi Chuck,

Chuck Hill wrote:

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.


C'mon, don't be lazy. :p I suggested the book because it has a comprehensive collection of information about Maven in one place. I think it is better than run through a lot of disconnected articles.



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?

Much simple than it seems in the article Mike pointed out.

Simpler than not using Maven?

Depends.

Simpler than the few Ant files that I now have?


For me, certainly. For most people, probably. For you and your team, not at all. :)



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.



Cool. You have made your own proprietary solution. You solved your problem and it is enough for you. That is great. You are not in the kind of situation I suggest to use Maven. You already have what you desire.


Now I would like to ask... How much time you spent until reach the level of control you have today? How simple do you think it is for other people to develop exactly in the same way you do? How much time is required to add a new developer to your team? What if this developer uses Linux instead of Mac and he is not inside your company?


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>


I know you can try and occasionally solve most problems with Ant. That is not the problem. Nobody said "you can with Maven, but you can't with Ant". But Maven has defined concepts you have to elaborate by yourself with Ant. It has advantages and drawbacks as any tool.




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?



Sure. If the solution is good, what is the problem of reusing it?


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?

How to handle the development lifecycle of interdependent projects. From the inception to the continuous process of release and maintenance. How you build, package, test, deploy, release, produce documentation, produce reports and metrics and etc. In a way that not only you, the guy that made the scripts, knows how to handle. In a way that can be clear for other people too. In a way that other people can easily use and contribute. In a way that a simple change in the environment doesn't bring everything down.


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 heard the same arguments about Test Driven Development every day. But I can't imagine how to develop software without a test first.


I started using Maven 3 years ago to manage WebObjects projects on my company. We invested money and time along these years to improve the way we develop software. Before this investment, every release was a pain. We were not able to follow our schedules. Development was a mess. It was very difficult to introduce new members in the middle of a project. It was hard to define the quality of the code produced. Resuming, we wast a lot of time.

We started to seek a way to reduce the waste of time. Maven solved all the problems? No. We have also started to use other tools and concepts, like Eclipse, Jira, Confluence, Hudson, Selenium, Scrum, TDD and go on. Today Maven help us to perform lot of tasks we didn't have idea about how to accomplish in the past. Is it perfect? Not at all. But it is a invaluable piece on our environment.


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.



IMHO, they are cool in the sense they help people to solve problems better than without using those tools.



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.


1) I don't like to reinvent the wheel. I don't like to waste my time thinking about problems that other people have already solved in a way that satisfy me.


2) In our profession I believe that if I can make people lives easier to work with me, is a plus. Even people I haven't met.


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 think it is exactly the opposite. When I said concepts behind the tool I mean the technical reasons. The ideas behind the technology. The rules to manage the software development process.


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.

Me too.

I'm not selling Maven. What I say on this list is based only on my own experience. Maven makes my life easier and the development process more reliable on the companies I work.

So if you want to "show me the money", that is the path.


It would be a pleasure to write a real case about the subject for you. Until I have the time, everything I can say is go to WOWODC and you'll see. ;)


Cheers,

Henrique
_______________________________________________
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.
      • From: Chuck Hill <email@hidden>
References: 
 >maven. (From: Mike Schrag <email@hidden>)
 >Re: maven. (From: Henrique Prange <email@hidden>)
 >Re: maven. (From: Chuck Hill <email@hidden>)

  • Prev by Date: Java One / WOWODC / WWDC
  • Next by Date: WOWODC West hotel
  • Previous by thread: Re: maven.
  • Next by thread: Re: maven.
  • Index(es):
    • Date
    • Thread