SonarSource/sonarqube · warning
Plugin [ ] is ignored because the version of required…
Error message
Plugin {} [{}] is ignored because the version {} of required plugin [{}] is not installed What it means
PluginRequirementsValidator.isCompatible logs this warning and returns false when an installed plugin satisfies the required plugin key but its installed version is older than the minimal version declared by the dependent plugin. SonarQube ignores the dependent plugin because the dependency version constraint is unmet.
Solutions
- Upgrade the required plugin named in the warning to at least the minimal version shown
- Downgrade or remove the dependent plugin that imposes the newer minimum requirement
- Check the plugin's changelog for compatible dependency versions and align both plugin versions
- If no compatible dependency exists, wait for an updated plugin release or drop the plugin
Example fix
# before extensions/plugins/my-plugin-2.0.jar # requires findbugs >= 4.0 extensions/plugins/sonar-findbugs-plugin-3.9.0.jar # after extensions/plugins/my-plugin-2.0.jar extensions/plugins/sonar-findbugs-plugin-4.2.4.jar # >= minimal version
Defensive patterns
Strategy: validation
Validate before calling
for (PluginInfo.RequiredPlugin req : plugin.getRequiredPlugins()) {
PluginInfo installed = pluginsByKeys.get(req.getKey());
if (installed == null ||
(installed.getVersion() != null &&
req.getMinimalVersion().compareToIgnoreQualifier(installed.getVersion()) > 0)) {
throw new IllegalStateException(req.getKey() + " must be >= " + req.getMinimalVersion());
}
} Prevention
- When upgrading a plugin, upgrade its dependency plugins in the same maintenance window
- Check each plugin's changelog for raised minimum dependency versions
- Pin compatible plugin version sets in your deployment manifest rather than copying ad-hoc JARs
When it happens
Trigger: Plugin A declares requiredPlugin-<key>=<minimalVersion>, plugin <key> is installed, installedRequirementVersion != null, and requiredPlugin.getMinimalVersion().compareToIgnoreQualifier(installedVersion) > 0 during plugin validation.
Common situations: Upgrading plugin A (which bumped its minimum dependency version) without upgrading dependency plugin B; pinning an old B version; build qualifiers like beta causing confusion (qualifiers are ignored in the comparison).
Related errors
- Plugin [ ] is ignored because the required plugin [ ] is…
- A plugin is storing excessively large data in the following…
- ############################################################…
- Insufficient privileges
- Plugin [ ] is blacklisted and is being uninstalled
AI-assisted analysis of SonarSource/sonarqube@184c821202 (2026-09-09).
Data as JSON: /api/errors/c6eb1d20a205ac1e.
Report an issue: GitHub.
Appendix: source
Thrown at server/sonar-server-common/src/main/java/org/sonar/server/plugins/PluginRequirementsValidator.java:83
boolean isCompatible(T plugin) {
if (!Strings.isNullOrEmpty(plugin.getBasePlugin()) && !allPluginsByKeys.containsKey(plugin.getBasePlugin())) {
// it extends a plugin that is not installed
LOG.warn("Plugin {} [{}] is ignored because its base plugin [{}] is not installed", plugin.getName(), plugin.getKey(), plugin.getBasePlugin());
return false;
}
for (PluginInfo.RequiredPlugin requiredPlugin : plugin.getRequiredPlugins()) {
PluginInfo installedRequirement = allPluginsByKeys.get(requiredPlugin.getKey());
if (installedRequirement == null) {
// it requires a plugin that is not installed
LOG.warn("Plugin {} [{}] is ignored because the required plugin [{}] is not installed", plugin.getName(), plugin.getKey(), requiredPlugin.getKey());
return false;
}
Version installedRequirementVersion = installedRequirement.getVersion();
if (installedRequirementVersion != null && requiredPlugin.getMinimalVersion().compareToIgnoreQualifier(installedRequirementVersion) > 0) {
// it requires a more recent version
LOG.warn("Plugin {} [{}] is ignored because the version {} of required plugin [{}] is not installed", plugin.getName(), plugin.getKey(),
requiredPlugin.getMinimalVersion(), requiredPlugin.getKey());
return false;
}
}
return true;
}
}
View on GitHub (pinned to 184c821202)