Lets assume we have an update site with 2 Eclipse features (each has it's own plug-in):
- Main Feature
- Optional Feature (depends on the main one)
In the new version, I want to fold the plug-ins of the Optional Feature into the Main Feature. I don't want to show the Optional Feature any more.
If I do the move just like I said, this is fine for new installs, but for updates it is problematic because the old feature that depends on an exact version of it's plug-in will stick around and cause a conflict.
I could keep the Optional Feature as an included feature of the Main Feature, but in that case there will still be an "Optional Feature.feature.group" artifact that will require the old version of the feature.
I am now back to square one, having to add the Optional Feature back as a root feature in the update site and showing it to the user just to get that "*.feature.group" there. It can be safely uninstalled later and I can indicate that in the name and description, but the whole process is somewhat messy and probably not easy to understand for users. It would probably work even worse with Eclipse Marketplace installs.
A simplified example error I get when installing the hidden (included in the main one) dummy feature :
Your original request has been modified.
"Main Feature" is already installed, so an update will be performed instead.
Cannot complete the install because of a conflicting dependency.
Software being installed: Main Feature 2 (main.feature.feature.group 2)
Software currently installed: Optional Feature 1 (optional.feature.feature.group 1)
Only one of the following can be installed at once:
Optional Feature Plug-in 1 (optional 1)
Optional Feature Plug-in 2 (optional 2)
Cannot satisfy dependency:
From: Optional Feature 1 (optional.feature.feature.group 1)
To: optional [1]
Cannot satisfy dependency:
From: Main Feature 2 (main.feature.feature.group 2)
To: optional [1]