On Wednesday, October 19, 2011 10:13:23 AM Gert Vanthienen wrote: > L.S., > > Yeah, we are moving in the right direction there, so nice work! One thing I > bumped into while doing a bit of a refactoring of the servicemix features > codebase, was the fact that some features descriptors contain a reference to > another one, e.g. the camel features descriptor refers to the cxf features > descriptor. While this does ensure that the Camel features descriptor is > self-contained, it also means that if you combine it with version of CXF > you now suddenly have all feature definitions twice (which has caused some > confusion for me when it picked the wrong version, so I'm guessing the same > thing will happen for users).
There is DEFINITELY a bug in the features-maven-plugin around this. JB and I were chatting about this on Friday and digging into the code. The features plugin really just has a single Map<String, Feature> to map the requested features. There isn't any concept of versions of the features to resolve, etc.... In many cases, transitive features can actually override features previously defined, but in other cases they wouldn't. Etc.... At the very least, that map needs to be something like Map<String, List<Feature>> or similar to allow the various versions of the features to looked up in there. Ideally, the <features> list in the pom could also be extended to allow versions: <features> <feature>cxf/2.5.0</feature> <features>camel-core/2.8.2</feature> .... or similar to make sure the developer can get complete control over that aspect of things. Just like with maven, transitive deps are great, but you do need to make sure there is a way to override them. Dan > Not really sure what the ideal solution here would be. Using a version > range for the mvn: url for the features.xml would be a start, but then you > end up with Maven version resolution that might not work well in an offline > situation or may even pick up another version of CXF than the one you > intended to use. > > Perhaps we could reimplement this to behave like a pre-requisite instead, > first looking if there's a feature descriptor installed that matches the > version range and only then trying to resolve and install it? > > Regards, > > Gert Vanthienen > ------------------------ > FuseSource > Web: http://fusesource.com > Blog: http://gertvanthienen.blogspot.com/ > > On Sat, Oct 15, 2011 at 8:26 AM, Daniel Kulp <dk...@apache.org> wrote: > > On Friday, October 14, 2011 11:58:26 PM Johan Edstrom wrote: > > > Hey, > > > > > > Just poking around in the features, and yes I cross post this - > > > > > > I know there has been work going on with regards to creating a sane > > > > default > > > > > set of features but currently the CXF features in 2.4.2 (I think it > > > was) uses spring 3.0.6, the karaf features 3.0.5 and the camel > > > features> > > actually > > > > > copy in cxf with a similar version but the older neethi. > > > > > > If we want these features in a consistent state, should we have a > > > master reference? > > > > > > I know this will impact development and agility, but it sure as heck > > > > would > > > > > improve stability if we had a solid inheritance chain? > > > > > > I know we also have a bunch of different features in the SMX area, > > > would> > > a > > > > > new features project help? Just asking… > > > > This is pretty much exactly where JB and I have been going with the > > recent changes in the features. Basically, the projects all STOP > > redefining features > > like spring and cxf and such. Instead, they grab those from the > > appropriate > > place (and using a version range to accommodate updates). > > > > For example: > > Karaf 2.2.4 defines all the Spring things. Thus, neither Camel or CXF > > define > > that anymore. They just grab spring from there (using "[3,4)" or > > similar). Camel 2.8.2 will use the CXF 2.4.3 features directly. (no > > redefines) > > > > If you don't use an obr, we still have issues with different bundle > > versions > > of various things. I did sync CXF and Camel as much as possible a > > little while ago, but they will likely drift a bit. > > > > Anyway, Karaf 2.2.4, CXF 2.4.3, and Camel 2.8.2 will go a long way to > > make it > > a lot easier and more consistent. > > > > Dan > > > > > Cheers! > > > > -- > > Daniel Kulp > > dk...@apache.org > > http://dankulp.com/blog > > Talend - http://www.talend.com -- Daniel Kulp dk...@apache.org http://dankulp.com/blog Talend - http://www.talend.com