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]