quarkusio/quarkus · error · MojoExecutionException

Classpath resource <pomPropsPath> is missing groupId

Error message

Classpath resource <pomPropsPath> is missing groupId

What it means

DevMojo reads groupId from the loaded quarkus-bootstrap-maven-resolver pom.properties; a null value means the properties file exists but lacks the groupId key, so it throws this MojoExecutionException. The properties file is generated by Maven at build time and must contain full artifact coordinates.

Source

Thrown at devtools/maven/src/main/java/io/quarkus/maven/DevMojo.java:1717

        if (coreDeployment == null) {
            throw new MojoExecutionException(
                    "Failed to locate io.quarkus:quarkus-core-deployment on the application build classpath");
        }

        final String pomPropsPath = "META-INF/maven/io.quarkus/quarkus-bootstrap-maven-resolver/pom.properties";
        final InputStream devModePomPropsIs = DevModeMain.class.getClassLoader().getResourceAsStream(pomPropsPath);
        if (devModePomPropsIs == null) {
            throw new MojoExecutionException("Failed to locate " + pomPropsPath + " on the classpath");
        }
        final Properties devModeProps = new Properties();
        try (InputStream is = devModePomPropsIs) {
            devModeProps.load(is);
        } catch (IOException e) {
            throw new MojoExecutionException("Failed to load " + pomPropsPath + " from the classpath", e);
        }
        final String devModeGroupId = devModeProps.getProperty("groupId");
        if (devModeGroupId == null) {
            throw new MojoExecutionException("Classpath resource " + pomPropsPath + " is missing groupId");
        }
        final String devModeArtifactId = devModeProps.getProperty("artifactId");
        if (devModeArtifactId == null) {
            throw new MojoExecutionException("Classpath resource " + pomPropsPath + " is missing artifactId");
        }
        final String devModeVersion = devModeProps.getProperty("version");
        if (devModeVersion == null) {
            throw new MojoExecutionException("Classpath resource " + pomPropsPath + " is missing version");
        }

        final DefaultArtifact devModeJar = new DefaultArtifact(devModeGroupId, devModeArtifactId, ArtifactCoords.TYPE_JAR,
                devModeVersion);
        final DependencyResult cpRes = repoSystem.resolveDependencies(repoSession,
                new DependencyRequest()
                        .setCollectRequest(
                                new CollectRequest()
                                        // it doesn't matter what the root artifact is, it's an alias
                                        .setRootArtifact(new DefaultArtifact(IO_QUARKUS, "quarkus-devmode-alias",

View on GitHub (pinned to e1c734241f)

Solutions

  1. Re-download the quarkus-bootstrap-maven-resolver jar: remove it from ~/.m2/repository and build with -U
  2. Pin a matching quarkus-maven-plugin version to the Quarkus platform BOM
  3. Verify the jar's pom.properties contains groupId/artifactId/version keys
Defensive patterns

Strategy: validation

Validate before calling

jar xf quarkus-bootstrap-maven-resolver-<v>.jar META-INF/maven/io.quarkus/quarkus-bootstrap-maven-resolver/pom.properties && grep groupId META-INF/maven/io.quarkus/quarkus-bootstrap-maven-resolver/pom.properties

Prevention

When it happens

Trigger: The pom.properties resource on the classpath has no `groupId` entry — only possible with a hand-crafted, stripped, or incorrectly generated pom.properties inside the quarkus-bootstrap-maven-resolver jar.

Common situations: Manually rebuilt/repackaged resolver jar without Maven metadata; custom packaging excluding pom.properties keys; tampered jar in local repository or an artifact mirror serving a modified jar.

Related errors


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