quarkusio/quarkus · error · MojoExecutionException

The 'stream' parameter cannot be combined with 'platformGrou

Error message

The 'stream' parameter cannot be combined with 'platformGroupId', 'platformArtifactId', or 'platformVersion'. Please use either 'stream' or the platform coordinates, not both.

What it means

resolveExtensionsCatalog validates mutually exclusive parameters: if a non-blank 'stream' is supplied together with any of platformGroupId/platformArtifactId/platformVersion, it immediately throws this MojoExecutionException. Quarkus requires you to pick either the stream shorthand or explicit platform coordinates, never both, because they are two ways of locating the same platform.

Source

Thrown at devtools/maven/src/main/java/io/quarkus/maven/CreateProjectMojo.java:386

            if (refresh) {
                getLog().debug("Clearing local extension catalog cache");
                catalogResolver.clearRegistryCache();
            }
        } catch (RegistryResolutionException e) {
            // fall back to the default platform
            catalogResolver = ExtensionCatalogResolver.empty();
        }
        return catalogResolver;
    }

    static ExtensionCatalog resolveExtensionsCatalog(AbstractMojo mojo, String groupId, String artifactId, String version,
            String stream, ExtensionCatalogResolver catalogResolver, MavenArtifactResolver artifactResolver,
            MessageWriter log)
            throws MojoExecutionException {

        if (!isBlank(stream)) {
            if (!isBlank(groupId) || !isBlank(artifactId) || !isBlank(version)) {
                throw new MojoExecutionException(
                        "The 'stream' parameter cannot be combined with 'platformGroupId', 'platformArtifactId', or 'platformVersion'."
                                + " Please use either 'stream' or the platform coordinates, not both.");
            }
            return resolveExtensionsCatalogForStream(mojo, stream, catalogResolver);
        }

        if (catalogResolver.hasRegistries()) {
            try {
                return isBlank(groupId) && isBlank(artifactId) && isBlank(version)
                        ? catalogResolver.resolveExtensionCatalog()
                        : catalogResolver.resolveExtensionCatalog(List.of(
                                ArtifactCoords.pom(getPlatformGroupId(mojo, groupId), getPlatformArtifactId(artifactId),
                                        getPlatformVersion(mojo, version))));
            } catch (RegistryResolutionException e) {
                log.warn(e.getLocalizedMessage());
                mojo.getLog().debug(e);
            }
        }

View on GitHub (pinned to e1c734241f)

Solutions

  1. Remove the platformGroupId/platformArtifactId/platformVersion properties and keep only -Dstream
  2. Or remove -Dstream and specify the full platform coordinates explicitly
  3. If the properties come from a CI pipeline or .mvn/maven.config file, strip the redundant ones there

Example fix

# before
mvn quarkus:create -Dstream=3.15 -DplatformVersion=3.15.1
# after
mvn quarkus:create -Dstream=3.15
Defensive patterns

Strategy: validation

Validate before calling

// Reject conflicting inputs before invoking the goal
boolean hasStream = stream != null && !stream.isBlank();
boolean hasCoords = notBlank(platformGroupId) || notBlank(platformArtifactId) || notBlank(platformVersion);
if (hasStream && hasCoords) throw new IllegalArgumentException("Use either stream or platform coordinates, not both");

Try / catch

// Fail fast in scripts
if [ -n "$STREAM" ] && [ -n "$PLATFORM_VERSION" ]; then echo "conflict" >&2; exit 2; fi

Prevention

When it happens

Trigger: Running `mvn quarkus:create ... -Dstream=3.15 -DplatformGroupId=io.quarkus.platform` (or with platformArtifactId/platformVersion) — any combination of stream plus one or more explicit platform coordinate properties.

Common situations: Copy-pasting platform coordinates from an older recipe while also adding -Dstream; scripting that unconditionally passes all platform properties even when stream is set; CI templates mixing both configuration styles.

Related errors


AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05). Data as JSON: /api/errors/7e0eeabcc9f17edc. Report an issue: GitHub.