I activated the p2 dropins folder in an Equinox-based application.
My questions and issues relates to the way the features and plug-ins are taken into account in this dropins context.
The Eclipse product is based on features (as opposed to be based on plug-ins) and in this context I would expect the dropins to load features.
For instance if I add to the dropins directory the following artifacts:
- One feature F1 based on one plugins P1
- Two plugins P1, P2,
I would expect only P1 to be loaded (and not P2 since P2 is not referenced by Is there a way to achieve that ?
More specifically, if:
- The core (the parts outside the dropins) has a feature F in version 1.0.0 referencing a plugin P in version 1.0.0
- The dropins has a feature F1 referencing the plug-in P1,
- The feature F1 has a dependency on the feature F in version 2.0.0 (strict) Is there a way to prevent P1 from being loaded (because the dependency is not fulfilled) ?
From what I understood from the different experiments I made, the ways to cope with this situation is :
- Either to move the dependency to the plug-in level - making P1 dependant on P2 2.0.0
- Or use p2 director or the p2 api to install the feature (instead of using the dropins capabilities). Are these assumptions correct or am I missing something ?
The drop-ins is a best effort at installing. As such it will install as many things as possible, wherever they are from (features or plugins).
As for the director, you need to be careful because if you have F1 depending on F, and both F1 and F have been installed as a root (which means explicitly installed), then uninstall F will not actually remove it. What I'm trying to say here is the removal done by the director is a soft one and that as long as there is a dependency on an IU, the IU will stay around.