On 7/29/06, Andrus Adamchik <[EMAIL PROTECTED]> wrote:
On Jul 29, 2006, at 7:12 PM, Justin Erenkrantz wrote:
> AIUI, the concern raised by Noel was that Maven never indicates the
> artifact version number. Therefore, even if it had 'incubating' in
> there somewhere, it wouldn't matter as no one would know it was under
> incubation.
I guess I am with Jukka on that. From my limited Maven experience
(correct me if I am wrong), Maven 2 is very explicit about versions.
You have to specify it at least in the parent POM of the project:
<dependency>
<groupId>abc</groupId>
<artifactId>xyz</artifactId>
<version>1.0-incubating-SNAPSHOT</version>
</dependency>
The only case I can think of where you don't set an explicit version
is when you get a dependency indirectly (as a dependency of another
dependency). Still the files ("artifacts") you end up downloading as
a result will have "incubating" in the file name, and the folder name
of the local repository.
In this later case if a user doesn't pay attention (s)he will not be
aware that something was downloaded from Apache at all (incubating or
otherwise); if (s)he does - "incubating" label is clearly visible.
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.
* 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).
In short, direct dependencies can be addressed by an Incubator policy that
requires "incubating" in the group or artifact identifiers of Maven POMs.
The harder problem is indirect dependencies.
Craig McClanahan
Andrus
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]