{"record":{"id":"2def06b96242ee78","repo":"GoogleContainerTools/jib","slug":"error-running-extension-extensionname-ex-g","errorCode":null,"errorMessage":"error running extension '${extensionName}': ${ex.getMessage()}","messagePattern":"error running extension '(.+?)': (.+?)","errorType":"exception","errorClass":"GradleException","httpStatus":null,"severity":"error","filePath":"jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/BuildImageTask.java","lineNumber":166,"sourceCode":"\n    } catch (InvalidFilesModificationTimeException ex) {\n      throw new GradleException(\n          \"container.filesModificationTime should be an ISO 8601 date-time (see \"\n              + \"DateTimeFormatter.ISO_DATE_TIME) or special keyword \\\"EPOCH_PLUS_SECOND\\\": \"\n              + ex.getInvalidFilesModificationTime(),\n          ex);\n\n    } catch (InvalidCreationTimeException ex) {\n      throw new GradleException(\n          \"container.creationTime should be an ISO 8601 date-time (see \"\n              + \"DateTimeFormatter.ISO_DATE_TIME) or a special keyword (\\\"EPOCH\\\", \"\n              + \"\\\"USE_CURRENT_TIMESTAMP\\\"): \"\n              + ex.getInvalidCreationTime(),\n          ex);\n\n    } catch (JibPluginExtensionException ex) {\n      String extensionName = ex.getExtensionClass().getName();\n      throw new GradleException(\n          \"error running extension '\" + extensionName + \"': \" + ex.getMessage(), ex);\n\n    } catch (IncompatibleBaseImageJavaVersionException ex) {\n      throw new GradleException(\n          HelpfulSuggestions.forIncompatibleBaseImageJavaVersionForGradle(\n              ex.getBaseImageMajorJavaVersion(), ex.getProjectMajorJavaVersion()),\n          ex);\n\n    } catch (InvalidImageReferenceException ex) {\n      throw new GradleException(\n          HelpfulSuggestions.forInvalidImageReference(ex.getInvalidReference()), ex);\n\n    } catch (ExtraDirectoryNotFoundException ex) {\n      throw new GradleException(\n          \"extraDirectories.paths contain \\\"from\\\" directory that doesn't exist locally: \"\n              + ex.getPath(),\n          ex);\n    } finally {","sourceCodeStart":148,"sourceCodeEnd":184,"githubUrl":"https://github.com/GoogleContainerTools/jib/blob/fb949e2676afbbd7dd7a1ef61e20251931325654/jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/BuildImageTask.java#L148-L184","documentation":"Jib's Gradle plugin wraps any JibPluginExtensionException thrown while executing a Jib extension (e.g. jib-extension-gradle-quarkus, jib-extension-gradle-jibquarkus) into a GradleException during the jibBuild task. The extension name is the extension class's fully qualified name and the extension's own message is appended. This means the extension plugin, not core Jib, detected a problem while transforming the container build.","triggerScenarios":"Running a Gradle build that applies and configures a Jib plugin extension via the plugins 'jibExtensions' block (e.g. quarkusJib extension), where the extension throws JibPluginExtensionException because required configuration is missing, unsupported Jib version, or the project's build output does not match what the extension expects (e.g. no quarkus-app build produced).","commonSituations":"Using jib-extension-gradle-quarkus on a non-Quarkus project or before running 'gradle build' so the quarkus-app directory does not exist; misconfigured extension closure; Jib core version incompatible with the installed extension version; extension applied via older syntax.","solutions":["Read the extension name and message in the error to identify which extension failed and fix its configuration in build.gradle (e.g. quarkusJib { ... })","Run the underlying build first (gradle build) so the extension can find the artifacts it needs (e.g. quarkus-app)","Align Jib plugin and extension versions in build.gradle/plugins block so they are compatible","Temporarily remove the jibExtensions block to confirm the base jibBuild works, then re-add incrementally"],"exampleFix":"// before\njib { ... }\nquarkusJib { }\n// after\njib { to { image = 'gcr.io/project/app' } }\nquarkusJib { environmentName = 'prod' } // configure required extension values\n// and ensure: gradle build ran before gradle jibBuild","handlingStrategy":"try-catch","validationCode":"// Verify extension config before running jibBuild\ndef hasExtension = project.extensions.findByName('quarkusJib') != null\nif (hasExtension && !file('build/quarkus-app').exists()) {\n  throw new GradleException('Run the Quarkus build before jibBuild')\n}","typeGuard":null,"tryCatchPattern":"try {\n  // gradle jibBuild equivalent\n} catch (GradleException e) {\n  if (e.message.startsWith('error running extension')) {\n    logger.error('Jib extension failed: ' + e.message)\n  }\n  throw e\n}","preventionTips":["Keep Jib core plugin and extension plugin versions aligned","Run the underlying framework build (e.g. gradle build) before jibBuild when an extension needs its output","Add extensions incrementally so failures are easy to attribute"],"tags":["gradle","jib","extension","configuration"],"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-14T05:17:10.506Z"}