GoogleContainerTools/jib · error · GradleException

Skaffold sync is currently only available for Jib projects i

Error message

Skaffold sync is currently only available for Jib projects in 'exploded' containerizing mode, but the containerizing mode of ${getProject().getName()} is '${jibExtension.getContainerizingMode()}'

What it means

Skaffold sync maps require the Jib containerizingMode to be 'exploded', because sync works by mapping source files into the exploded app root. The task parses jibExtension.getContainerizingMode() and throws GradleException when it resolves to anything other than EXPLODED.

Source

Thrown at jib-gradle-plugin/src/main/java/com/google/cloud/tools/jib/gradle/skaffold/SyncMapTask.java:72

          GradleProjectProperties.getForProject(
              getProject(),
              getLogger(),
              tempDirectoryProvider,
              jibExtension.getConfigurationName().get());

      GradleRawConfiguration configuration = new GradleRawConfiguration(jibExtension);

      // TODO: move these shared checks with SyncMapMojo into plugins-common
      if (projectProperties.isWarProject()) {
        throw new GradleException(
            "Skaffold sync is currently only available for 'jar' style Jib projects, but the project "
                + getProject().getName()
                + " is configured to generate a 'war'");
      }
      try {
        if (!ContainerizingMode.EXPLODED.equals(
            ContainerizingMode.from(jibExtension.getContainerizingMode()))) {
          throw new GradleException(
              "Skaffold sync is currently only available for Jib projects in 'exploded' containerizing mode, but the containerizing mode of "
                  + getProject().getName()
                  + " is '"
                  + jibExtension.getContainerizingMode()
                  + "'");
        }
      } catch (InvalidContainerizingModeException ex) {
        throw new GradleException("Invalid containerizing mode", ex);
      }

      try {
        String syncMapJson =
            PluginConfigurationProcessor.getSkaffoldSyncMap(
                configuration,
                projectProperties,
                jibExtension.getSkaffold().getSync().getExcludes());

        System.out.println();

View on GitHub (pinned to fb949e2676)

Solutions

  1. Set containerizingMode to 'exploded' in the jib extension.
  2. Verify no CI configuration overrides containerizingMode back to 'packaged' for the Skaffold build.
  3. If 'packaged' mode is required, disable Skaffold file sync and rely on full image rebuilds.

Example fix

// before
jib { containerizingMode = 'packaged' }
// after
jib { containerizingMode = 'exploded' }
Defensive patterns

Strategy: validation

Validate before calling

// build.gradle
assert jib.containerizingMode.get() == 'exploded' : 'Skaffold sync requires containerizingMode=exploded'

Prevention

When it happens

Trigger: Running the Skaffold sync map task with jib.containerizingMode set to 'packaged' (default) or any other value in the Gradle jib extension.

Common situations: New Jib setups where containerizingMode is left at its default 'packaged' while Skaffold dev is configured to use sync; teams that intentionally set 'packaged' for faster initial builds.

Understand the failure class

Background: "Invalid value" and "allowed values are" config errors: what your library rejected and how to fix it — this error's family across 41 libraries.

Related errors


AI-assisted analysis of GoogleContainerTools/jib@fb949e2676 (2026-09-06). Data as JSON: /api/errors/8132ef36fc20c332. Report an issue: GitHub.