Well I'm glad I'm not the only one. The disparity between camel and cxf was the biggest issue, since camel overrides the cxf feature with other versions.
In the customer case I resolved it with using karaf features + camel features, that at least got the cxf bundles in cleanly - but with an older neethi version. /je On Oct 19, 2011, at 8:52 AM, Daniel Kulp wrote: > 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