[jbosside-dev] RE: About feature.xml and bundling plugins (WAS: jBPM Designer feature.xml needs to be updated)

Koen Aers koen.aers at jboss.com
Thu Sep 28 04:33:43 EDT 2006


I checked this and there is no generation of feature.xml whatsoever...
The feature.xml that is packaged in my distribution is the exact same
feature.xml that I created in the IDE...

Regards,
Koen 

> -----Original Message-----
> From: Max Andersen 
> Sent: donderdag 28 september 2006 6:12
> To: Marshall Culpepper; Koen Aers
> Cc: jbosside-dev at lists.jboss.org; Tom Baeyens
> Subject: Re: About feature.xml and bundling plugins (WAS: 
> jBPM Designer feature.xml needs to be updated)
> 
> 
> Koen, just to check. Remember to actually look at the 
> *generated* feature.xml/plugin.xml when looking at what 
> version numbers actually end up in there. This was what put 
> me of for the first couple of times I saw this bug reported. 
> I also said: No, we don't put concrete version numbers in 
> there....but the distribution actually does.
> 
> 
> /max
> 
> > On 9/27/06, Koen Aers <koen.aers at jboss.com> wrote:
> >>
> >>
> >>
> >> In fact this is not true. Eclipse features *are* a 
> packaging mechanism.
> >> A feature does not *need* anything by itself. Only the 
> plugins in the 
> >> feature have dependencies on other plugins. See :
> >> 
> http://dev.eclipse.org/viewcvs/index.cgi/*checkout*/platform-core-hom
> >> e/d
> >> ocuments/plugin-versioning.html?rev=1.2 for a document 
> stating this. 
> >> The fact that you will not find any Eclipse project that 
> references 
> >> plugins in the feature.xml is due to the fact that they are at the 
> >> source and perfectly capable of defining their own 
> packaging units in 
> >> which no feature contains plugins that appear also 
> somewhere else in 
> >> other features.
> >
> >
> > Yes, it is true that eclipse features are used for 
> packaging, but the 
> > feature itself also logically separates the idea of "your 
> plugin" (or 
> > "1st class plugin) from "external or dependency" plugin! There are 
> > many problems with PDE build... one of the major ones being 
> that the 
> > distribution options are dismal at best, but not giving us clear 
> > separation is not one of those problems! All of that being said I 
> > think something has been lost in the debate. Dependencies that are 
> > declared in the feature.xml should be features only. 
> Technically it is 
> > possible to list plugin dependencies in the feature.xml 
> (and there are 
> > features in Eclipse Platform that do it) , but I prefer that plugin 
> > dependencies are pulled from plugin.xml, where they belong. 
> Basically 
> > the only reason feature dependencies should be listed in 
> feature.xml 
> > <import.../> is if you are trying to pull in more 
> functionality than 
> > you necessarily need, or if you want the actual "feature" directory 
> > and "feature.xml" that go along with that huge list of 
> plugins in your 
> > distribution. JBossIDE Core does this because we want to 
> re-distribute 
> > stuff that we don't necessarily "depend" on. Everything 
> else should be 
> > in plugin dependencies.. ie.....
> >
> > feature.xml:
> > <feature id="org.jbpm.gd.jpdl.feature"> <plugin 
> > id="org.jbpm.gd.jpdl.ui" ../> </feature>
> >
> > plugin.xml:
> > <plugin id="org.jbpm.gd.jpdl.ui">
> > <requires>
> > <import plugin="org.eclipse.gef"/>
> > </requires>
> > </plugin>
> >
> > Instead of duplicating the "org.eclipse.gef" requirement as a 
> > <plugin/> in feature.xml
> >
> > As a matter of fact after exploring the different Eclipse 
> projects a 
> > bit
> >> I have found evidence that what you say is not true. Have 
> a look at 
> >> the attached feature.xml files for the rcp feature and for the 
> >> equinox feature and see that they are exactly using the 
> 'evil' way of 
> >> doing things. And I am sure that if I look a bit around I will be 
> >> able to find plugin providers (that are not part of the Eclipse 
> >> overall project) that have also feature.xml files containing 
> >> references to third party plugins in the <plugin> tags.
> >
> >
> >
> > IMO the two features that you have shown aren't adequate 
> evidence...  
> > both of
> > these features are using what I consider to be "core" 
> plugins of the 
> > Eclipse SDK/RCP/platform. These plugins are mixed and 
> matched all over 
> > the place to create different configurations and feature 
> sets etc. To 
> > look at something more similar to our use case I think you need to 
> > take a look at an WTP feature which has many "backward" 
> dependencies 
> > like we do. If we look at 
> > features/org.eclipse.wst.xml.core/feature.xml I think we will see 
> > something which is much more "common" place in 2nd/3rd tier 
> features.
> >
> > I've attached the file for review (and if you look at 
> pretty much any 
> > other WTP feature you will notice the same pattern).
> >
> > If you notice, only plugins that are actually 1st-tier are 
> listed as 
> > <plugin>. All dependencies are listed as "imports" via 
> feature-import 
> > (in this case Platform, RCP, EMF, XSD, etc). This, IMO is 
> the model we 
> > should be following since it is about as close as you can 
> get to our 
> > use case in a standard eclipse feature.
> >
> >> This thing we are doing here (with using <plugin> instead of
> >> > <import>) is actually in the same ballpark since it breaks 
> >> > updatemanagers and depedency checking.
> >>
> >> Again, I have completely no evidence that this is 
> happening. In fact, 
> >> the JIRA issue you mention is happening because the update 
> manager is 
> >> looking for particular versions of the plugins stated in the 
> >> feature.xml. But you don't have to state these versions in your 
> >> feature.xml explicitly. If you do not state them explicitly any 
> >> version that is available on the update site will satisfy 
> the requirements.
> >
> >
> > Yes this specific bug is related to a "specific" version of 
> a plugin 
> > listed in the plugin.xml. It should be noted that ever since 3.2, 
> > "0.0.0" for your plugin id is now updated at build time to be the 
> > "exact" version that was there at build time. It is no 
> longer resolved 
> > at runtime meaning dependencies as <plugin/> should NEVER happen!
> >
> > There is *much* more granular control over dependency versioning in 
> > the <requires><import/> than in <plugin/>. Basically in the 
> plugin tag 
> > you have
> > 2 options:
> > 1) A specific version (bad)
> > 2) 0.0.0 (change to specific version @ build time). (good 
> -- but user 
> > still sees a specific version at the end of the day in their 
> > distribution which is *BAD BAD BAD* for dependencies)
> >
> > In the import tag you have much more control:
> > 1) You don't have to specify a version at all, meaning it 
> should work 
> > with
> > *any* version of the plugin (there is no static version changing at 
> > build time here)
> > 2) Specify a certain version, and use a "match" qualifier 
> that can be 
> > "equivalent" "greater" "less", etc etc.... this gives us MUCH more 
> > control over what we work with and what we don't. This will allow 
> > users to upgrade to i.e. 1.5.1 while we are still turning 
> the gears on 
> > our next release.
> >
> >
> >
> 
> 
> 
> -- 
> --
> Max Rydahl Andersen
> callto://max.rydahl.andersen
> 
> Hibernate
> max at hibernate.org
> http://hibernate.org
> 
> JBoss a division of Red Hat
> max.andersen at jboss.com
> 




More information about the jbosstools-dev mailing list