• 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: Chuck Hill <email@hidden>
  • Date: Mon, 6 Apr 2009 11:53:15 -0700

On Apr 3, 2009, at 5:13 PM, Henrique Prange wrote:
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?

A few days, less time than I _guess_ it would take me with Maven.


How simple do you think it is for other people to develop exactly in the same way you do?

So far it has been pretty simple.


How much time is required to add a new developer to your team?

98%+ of the time is learning the domain and architecture. The build infrastructure? Maybe half a day to get everything installed, built, and configured.



What if this developer uses Linux instead of Mac and he is not inside your company?

My current project is 100% remote / distributed and no problem bringing on new people. As long as Eclipse/WOLips runs on Linux as it does on OS X, I don't see what different that might make. I don't use hard coded paths...



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?


One problem that I would expect is that you can only be all things to all people by addressing the lowest common denominator. So anything unique in how I want to have things work is either fighting against the Maven way or writing my own extensions to Maven or giving up and accepting something less than perfect.


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.

Interdependent? You mean circular dependancies? Or just a dependancy tree without cycles?



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.

A simple change like someone deleting something from their Maven repository that you were depending on? That is not a theoretical question, I ran into that exact problem trying to build an Open Source project that used Maven. I had a lot of fun tracking that down and working around it.



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 confess, I usually write the tests after. If you can effectively develop that way (and I can), I don't see that it makes a lot of different when the tests are written. If you are having a hard time working out the appropriate design or API, writing the tests first can help clarify things.



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.

Maven helps you meet schedules? I am finding that hard to believe.


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.

That is a lot of changed tools and processes. It is hard to identify which tool is responsible for what change.



Out of steam.

Chuck



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


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

  • Prev by Date: Re: Trouble with Internet Explorer
  • Next by Date: Re: [OT] It's gone!!!
  • Previous by thread: Re: maven.
  • Next by thread: Re: maven.
  • Index(es):
    • Date
    • Thread