On Fri, 2009-05-29 at 11:00 -0700, Dean Schulze wrote:
> I have worked on a number of projects with this structure
> 
>   src/java/...
>   src/c/...
>   src/ddl/...
>   src/scripts/...
> 
> for multi-language projects.

Nothing wrong with that structure for the source code.  Fits all the
criteria for disjointness.  Easy to handle with any of Ant, Gant, and
Gradle.  Maven may or may not have issues with it.
> 
> Putting tests and src share the same parent has never been a problem,
> but then I've never worked on a Maven project.  And I've worked on a
> lot of projects at a lot of companies.  I'm an independent contractor
> and have moved to new organizations / projects about twice a year for
> the past 10 years.
> 
I still think it is easier and better, even with Ant or Gant, to have
the tests in a separate directory.  It means you can do compilation and
distribution creation using the hierarchy and without recourse to
excludes.

> Projects have different structures just about everywhere.  Sometimes
> the differences are slight and sometimes they are large.  Trying to
> rigidly enforce a particular project structure may be why Maven has
> never been widely used.
> 
The first two sentences I agree with.  The third sentences includes a
falsity:  that Maven is not widely used.  I'm afraid you are just wrong
on this.  Maven may not be used much in your circle of projects, but you
cannot extrapolate that wider than your experience without some data.

Having said that, Maven has some serious problems, which is why Gradle
exists -- to solve them.

> Ant's shortcomings aren't due to it's requiring you to specify how
> your project is laid out.  That is quick and easy.  Ant's problems are
> due to it being based on a markup language rather than a scripting or
> programming language.

No argument there.  This is why I created Gant and then Hans went on to
create Gradle.
> 
> I haven't used groovy very much, but it just seems like the right
> foundation for a build tool.  I haven't heard anything good about
> Maven, though, and I'm skeptical about adopting it's conventions in a
> build system that in large part was created to overcome the
> shortcomings of XML based systems like Ant and Maven.

Your first sentence echos exactly what everyone, at least on this lists,
knows as "The Truth":  XML is not a language for describing builds,
Groovy is.

There are a lot of lovers of Maven out there, I suspect your experience
is amongst preferers of Ant.  This has biased your experience somewhat.

Just because Maven as a whole has problems it doesn't mean that some
decisions are not good ones -- don't throw the baby out with the bath
water.  For a convention-based system Maven 1 choices were a start but
had errors, Maven 2 choices were significantly better and represent a
very sane structuring choice.  Gradle is able to use the Maven 2
convention because it is a reasonable one, and because it is the Maven 2
choice has a good pool of use already.

There are other sensible choices of default structure, but given the
Maven 2 one is already out there is makes good sense to use it.
  
-- 
Russel.
=============================================================================
Dr Russel Winder      Partner
                                            xmpp: [email protected]
Concertant LLP        t: +44 20 7585 2200, +44 20 7193 9203
41 Buckmaster Road,   f: +44 8700 516 084   voip: sip:[email protected]
London SW11 1EN, UK   m: +44 7770 465 077   skype: russel_winder

Attachment: signature.asc
Description: This is a digitally signed message part

Reply via email to