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

  1. Upgrade the required plugin named in the warning to at least the minimal version shown
  2. Downgrade or remove the dependent plugin that imposes the newer minimum requirement
  3. Check the plugin's changelog for compatible dependency versions and align both plugin versions
  4. 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 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


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)