On Jul 30, 2006, at 12:41 AM, Craig McClanahan wrote:
There are (at least) two scenarios where I believe there is
legitimate cause
for concern with the way Maven does things:
* You can declare a dependency on a particular groupId/artifactId
combination *without* specifying a version number. The meaning
is something along the lines of "take the latest version you know
about."
Thus, you could unknowingly be declaring a dependency on an
incubating project if "incubating" is only present in the version
number.
This can be alleviated by requiring that "incubating" be part of
the group
or artifact identifier, which I think would be a really good idea.
AFAIK the version still has to be set explicitly in the parent POM.
It certainly fails for me when I remove the version tag from the
dependencies. Maven gurus please correct me if I'm wrong. (I think
only Maven *plugin* versions can be omitted??)
* The harder problem is that Maven2 does transitive dependency
identification. If you declare an explicit dependency on module A,
which itself has a dependency on incubating module B, you're not
going to know that you are depending on incubating code unless
you are very careful about analyzing the entire set of POMs for all
your dependencies (or you generate the website and analyze the
dependency report that is produced there).
That was the case that I described. My understanding is that the
roots of the policy requiring to include a clear indication that the
code is incubating is to alert the users of the differences between
"Apache software" and "incubating Apache software".
So my earlier point was that if Maven downloads a transitive
dependency that is third or higher degree from the root, users either
do not know that they got anything "Apache" at all (so no unintended
misrepresentation of the incubating code takes place), of if they do
- they will clearly see the "incubating" suffix in the Maven log or
local repo directory name, or the jar file name, or any other number
of ways. Therefore having "x.x-incubating" in the version number
seems sufficient.
Andrus
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]