Here is what I said in an email:

-----------

As requested by dIon here's a summary of the 2 proposals we have for
introducing compatibility definition in the POM for plugins (i.e. what
version of Maven a given plugin is compatible with).

Proposal 1:

* Add the following to project.xml (this is an example):

<compatibilities>
  <compatibility>1.0-rc1</compatibility>
  <compatibility>1.0-rc2</compatibility>
  <compatibility>1.0-rc3-SNAPSHOT</compatibility>
</compatibilities>

Proposal 2:

* Reuse the dependencies elements of project.xml (this is an example):

<dependency> 
  <groupId>maven</groupId>
  <artifactId>maven</artifactId>
  <version>1.0+</version>
  <type>maven</type> 
</dependency> 

My analysis:

* First question to answer: whether we wish to support complex
versioning right now. i.e. the use of "+". I am personally not in favor
of using that now for 2 reasons:
  * It is complex to implement and we could easily use a list of
versions as showin in proposal 1
  * It raises lots of ugly questions. Like: if I say "1.0-rc1+", how can
I know that my plugin will be compatible with 1.1 when it is not even
yet designed nor released? So in practice I cannot say 1.0-rc1+ but I'll
have to say something like "1.0-rc1"-"1.0"

* I like the dependency reuse but for the following points:
  * We will need to really tackle the <type> element properly and
provide Resolvers for each type. We'll also need to provide better APIs
for plugin developers as I believe some plugins are currently iterating
over any dependency. Something like project.getDependencies(type) maybe.
  * How do we specify multiple versions? Using a comma-separated list
seem to have been rejected by everyone (see previous posts on
compatibility in archives).

* Although we could reuse the dependency stuff, Maven core is something
special and unlike other dependencies. Why? Because other dependencies
can be downloaded whereas Maven core is installed and cannot be changed
automatically. Also Maven is not an artifact. It is not composed only of
a JAR. It is a complete system. That means there's no relationship
between the Maven system installed on your machine and the remote
repository. It happens there is a maven jar but this not the
compatibility we are stating. We are stating a compatibility with the
full installed Maven, not an API compatibility with the maven jar.

* Are we going to also specify what version of the POM a plugin
supports? Now that plugins are extracted from the core and could be
provided by third parties, it may become necessary. One solution would
be to link Maven versions with POM versions but I don't know if it
provides enough flexibility.

Thanks
-Vincent

-----

Could you comment on the 2 proposals?

Thanks
-Vincent

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> Sent: 27 November 2003 06:53
> To: [EMAIL PROTECTED]
> Subject: [pom3/4] <compatibilities> element.
> 
> Where did this discussion end up.
> 
> From what I can tell, I suggested we re-use the <dependency> element
with
> a new <type>, and then discussion stalled.
> 
> Is that it?
> --
> dIon Gillard, Multitask Consulting
> Blog:      http://blogs.codehaus.org/people/dion/
> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]



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

Reply via email to