I write this mail with my day job hat on, rather than my Jakarta Commons
hat.

I have spent a little while trying to get Maven integrated as the build and
deploy system for one of our products at my day job. The product is fairly
simple and small, so I thought it wouldn't be too bad to achieve. I was
wrong. This is not intended as a flame, but as constructive criticism. I
include suggestions for improving Maven in a corporate (rather than OSS)
environment. All the below is ref the b10 release.


1) Project xml and Project properties.
Maven sells itself as 'wite a project xml and you are done'. But in reality
this is not the case. Many parameters are controlled in the project
properties, and still others have to be hacked into the maven xml. This is
very confusing. The roles of each of these files needs better defining.

For example, it would seem more sensible to include the location of the
central repository in the project xml file. I'm sure there is a reason why
its not, but its not clear.


2) Repository is an over used term
The main project xml has a <repository> element. But this is not what you
would expect as it does not define details of the central or local
repositories. Instead it defines scm. PLEASE rename this element.


3) No mid-level repository
A corporate environment wants three levels of repository, not two. The
central ibiblio, the local one, and a shared network server in the middle.
Releases are made to the shared network server, not ibiblio. I suggest
building a middle level repository into the design.

I have been forced to set the local repository to be the shared network
server, which is fine for single site working, but not for cross site
working. I know that you can have multiple remote repositories, but what
would happen when I release the code (jar:deploy)? Would it update both?
There simply isn't enough clarity.


4) Releases with jars
To include the jar files in the output zip files requires a change to maven
xml. This seems like a very normal kind of a requirement, but is difficult
to achieve. I suggest that the project xml needs a way to define which
dependencies to include in the zip.


5) Assumptions from OSS
Too much assumes the OSS model, where deployments are via scp/ssh. A
corporate environment will use file copies far more often. I suggest that
each place where communication takes place should use a uniform definition
of communication.

For example, at present, I still don't know how deploy the zip files via a
file copy. dist:deploy seems determined to talk to ibiblio, which of course
fails. The pom:deploy plugin uses one property while site:deploy uses
another. I suggest this desparately needs unifying.


6) Maven-propaganda logo.
This should not be the default. It caused raised eyebrows in my corporate
environment and I had to find the way to change it. (I'm sure you are all
aware of the significance of the red star). The maven feather image is much
more acceptable to corporate users (and also OSS if you examine
jakarta-commons lang/collections/...)


7) Plugin documentation
There is lots of documentation in terms of pages, but often very little real
information of value. The plugin pages are often very weak. I suggest some
redesign is needed.

For example, the plugins page lists all the plugins at the top which link to
lower down the page before linking to the actual site for the plugin. This
is VERY annoying.

For example(2), the plugins list includes both very basic functions (java,
jar, site, dist, deploy) and many, many others. Trying to work out what you
actually need to know is VERY difficult. I suggest breaking out a core set
of plugins, at least in terms of documentation. And these core plugins need
to be very well documented.


8) Getting started/User guide are too complex
The Maven concept isn't that hard really. But the documentation makes it
seem hard. A document that says how you should layout your files and what
the 5 or 6 basic plugin calls are would make a great difference. It should
also link to other docs for more info.


At present I can
- build a jar  (jar)
- build and deploy a site  (site:deploy)
- create the zip files  (dist)
- and after much, much trouble I can copy the jar to the repository
(jar:install)
But I still can't
- copy the zips to a file location of my choosing
- label the CVS
- increment the currentVersion property
- do a release with a single maven call
In the end you start to wonder whether it really benefits you over Ant.

Please don't misunderstand me, Maven works well when it works. But it is
incredibly fustrating when it doesn't.

Stephen



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to