The main goal of this ticket is to be able to "group" several plugins sharing the same lifecycle and the same purpose. Let's take the example of java, we don't want the end user to manage independently the checkstyle, pmd, findbugs, jacoco, cobertura, ... plugins. This end user should be able to say that he wants to :
- Install the Sonar Java 1.1
- Upgrade the Sonar Java to version 1.2
The ability to manually deploy some plugins independently will remain and in that case it will be up to each Sonar administrator to deploy some compatible plugin versions.
To implement this feature, a new 'Plugin-Parent' property must be defined on each 'child' plugin that must be attached to a parent plugin.
On a plugin like the Sonar Checkstyle plugin, the expected value is 'Parent: java'.
Moreover the following updates are required in the "Update Center" page :
- "Installed Plugins" tab
- The plugins belonging to the same group should be placed under the 'master' plugin of the group
- The uninstall button must lead to the uninstallation of all plugins belonging to the group.
- The version displayed at group level should be the version of underlying plugins.
- "Available Plugins" tab
- The plugins belonging to the same group should be grouped (same mechanism used in the "Installed Plugins" tab)
- The install button must lead to the installation of all plugins belonging to the ecosystem
- "Plugin Update" tab
- No need to display the content of an group. Ex: Sonar Java 1.1 -> 1.2, Update to version 1.2.
- If in a new version of an ecosystem doesn't embed anymore a plugin, this plugin must be automatically uninstalled when upgrading to a new version of the group