{"record":{"id":"084e091191437e9c","repo":"GoogleContainerTools/jib","slug":"extension-extension-getclass-getsimplename-084e09","errorCode":null,"errorMessage":"extension ${extension.getClass().getSimpleName()} does not expect extension-specific configuration; remove the inapplicable <pluginExtension><configuration> from pom.xml","messagePattern":"extension (.+?) does not expect extension-specific configuration; remove the inapplicable <pluginExtension><configuration> from pom\\.xml","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"jib-maven-plugin/src/main/java/com/google/cloud/tools/jib/maven/MavenProjectProperties.java","lineNumber":652,"sourceCode":"          ex);\n    }\n  }\n\n  // Unchecked casting: \"getExtraConfiguration()\" (Optional<Object>) to Object<T> and \"extension\"\n  // (JibMavenPluginExtension<?>) to JibMavenPluginExtension<T> where T is the extension-defined\n  // config type (as requested by \"JibMavenPluginExtension.getExtraConfigType()\").\n  @SuppressWarnings({\"unchecked\"})\n  private <T> ContainerBuildPlan runPluginExtension(\n      Optional<Class<T>> extraConfigType,\n      JibMavenPluginExtension<?> extension,\n      ExtensionConfiguration config,\n      ContainerBuildPlan buildPlan)\n      throws JibPluginExtensionException {\n    Optional<T> extraConfig = Optional.empty();\n    Optional<Object> configs = config.getExtraConfiguration();\n    if (configs.isPresent()) {\n      if (!extraConfigType.isPresent()) {\n        throw new IllegalArgumentException(\n            \"extension \"\n                + extension.getClass().getSimpleName()\n                + \" does not expect extension-specific configuration; remove the inapplicable \"\n                + \"<pluginExtension><configuration> from pom.xml\");\n      } else if (!extraConfigType.get().isInstance(configs.get())) {\n        throw new JibPluginExtensionException(\n            extension.getClass(),\n            \"extension-specific <configuration> for \"\n                + extension.getClass().getSimpleName()\n                + \" is not of type \"\n                + extraConfigType.get().getName()\n                + \" but \"\n                + configs.get().getClass().getName()\n                + \"; specify the correct type with <pluginExtension><configuration \"\n                + \"implementation=\\\"\"\n                + extraConfigType.get().getName()\n                + \"\\\">\");\n      } else {","sourceCodeStart":634,"sourceCodeEnd":670,"githubUrl":"https://github.com/GoogleContainerTools/jib/blob/fb949e2676afbbd7dd7a1ef61e20251931325654/jib-maven-plugin/src/main/java/com/google/cloud/tools/jib/maven/MavenProjectProperties.java#L634-L670","documentation":"A <pluginExtension><configuration> block was supplied in pom.xml for a Jib extension whose getExtraConfigType() returns Optional.empty(), i.e. the extension declares it accepts no extension-specific configuration. MavenProjectProperties.runPluginExtension detects this mismatch and throws IllegalArgumentException before invoking the extension.","triggerScenarios":"Adding <pluginExtension><configuration implementation=\"...\">...</configuration></pluginExtension> in the jib-maven-plugin <configuration> for an extension like jib-spring-boot or another extension that defines no extra configuration type.","commonSituations":"Copying extension configuration blocks from documentation/examples into a project whose extension doesn't support them; using a newer/older extension version where extra-config support was removed; confusing Jib global configuration with extension-specific configuration.","solutions":["Remove the <pluginExtension><configuration> block from the jib-maven-plugin configuration in pom.xml.","Verify the extension actually supports extension-specific configuration (check its getExtraConfigType/README) before adding <configuration>.","Move the settings into regular jib plugin configuration or application properties if the extension reads configuration from elsewhere.","Align extension version with documentation — an upgrade/downgrade may have changed extra-config support."],"exampleFix":"<!-- before -->\n<pluginExtensions>\n  <pluginExtension>\n    <implementation>com.example.MyExtension</implementation>\n    <configuration implementation=\"com.example.MyConfig\"><foo>bar</foo></configuration>\n  </pluginExtension>\n</pluginExtensions>\n\n<!-- after -->\n<pluginExtensions>\n  <pluginExtension>\n    <implementation>com.example.MyExtension</implementation>\n  </pluginExtension>\n</pluginExtensions>","handlingStrategy":"validation","validationCode":"// Before adding <pluginExtension><configuration>, check the extension supports extra config\n// boolean supportsExtraConfig = myExtension.getExtraConfigType().isPresent(); // false => do NOT add <configuration>","typeGuard":null,"tryCatchPattern":"try {\n  // mvn jib:build with extensions\n} catch (IllegalArgumentException e) {\n  if (e.getMessage().contains(\"does not expect extension-specific configuration\")) {\n    // remove the <pluginExtension><configuration> block from pom.xml\n  }\n  throw e;\n}","preventionTips":["Consult the extension's README for whether it accepts <configuration> before adding one.","Only add <pluginExtension><configuration> when copying from that extension's own docs.","Diff pom.xml against the extension's documented example when upgrading versions."],"tags":["jib","maven","pom-configuration","plugin-extension"],"backgroundTag":"invalid-config-value","analyzedSha":"fb949e2676afbbd7dd7a1ef61e20251931325654","analyzedAt":"2026-09-06T14:04:09.491Z","contentChangedAt":"2026-09-06T14:04:09.491Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}