quarkusio/quarkus · error · GradleException

Classpath resource + pomPropsPath + is missing artifactId

Error message

Classpath resource + pomPropsPath + is missing artifactId

What it means

QuarkusDev.getQuarkusBootstrapResolver reads a properties resource (pomPropsPath) from the classpath to build the dev-mode dependency coordinate. This GradleException is thrown when the resource lacks the artifactId key. Like its groupId/version siblings, it signals malformed Quarkus plugin metadata on the classpath.

Source

Thrown at devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java:645

    private Dependency getQuarkusBootstrapResolver(String artifactId) {
        final String pomPropsPath = "META-INF/maven/io.quarkus/" + artifactId + "/pom.properties";
        final InputStream devModePomPropsIs = DevModeMain.class.getClassLoader().getResourceAsStream(pomPropsPath);
        if (devModePomPropsIs == null) {
            throw new GradleException("Failed to locate " + pomPropsPath + " on the classpath");
        }
        final Properties devModeProps = new Properties();
        try (InputStream is = devModePomPropsIs) {
            devModeProps.load(is);
        } catch (IOException e) {
            throw new GradleException("Failed to load " + pomPropsPath + " from the classpath", e);
        }
        final String devModeGroupId = devModeProps.getProperty("groupId");
        if (devModeGroupId == null) {
            throw new GradleException("Classpath resource " + pomPropsPath + " is missing groupId");
        }
        final String devModeArtifactId = devModeProps.getProperty("artifactId");
        if (devModeArtifactId == null) {
            throw new GradleException("Classpath resource " + pomPropsPath + " is missing artifactId");
        }
        final String devModeVersion = devModeProps.getProperty("version");
        if (devModeVersion == null) {
            throw new GradleException("Classpath resource " + pomPropsPath + " is missing version");
        }
        return project.getDependencies()
                .create(String.format("%s:%s:%s", devModeGroupId, devModeArtifactId, devModeVersion));
    }

    private Dependency getQuarkusCoreDeployment(ApplicationModel appModel) {
        ResolvedDependency coreDeployment = null;
        for (ResolvedDependency d : appModel.getDependencies()) {
            if (d.isDeploymentCp() && d.getArtifactId().equals("quarkus-core-deployment")
                    && d.getGroupId().equals("io.quarkus")) {
                coreDeployment = d;
                break;
            }
        }

View on GitHub (pinned to e1c734241f)

Solutions

  1. Purge cached io.quarkus artifacts from ~/.gradle/caches/modules-2 and ~/.m2/repository, then re-resolve dependencies.
  2. Use matching versions for the Quarkus Gradle plugin and the Quarkus platform BOM.
  3. Check the actual jar for poms.properties (unzip -p <jar> <path>) to confirm the artifactId key exists.
  4. Run with --refresh-dependencies to force re-download.

Example fix

// before
./gradlew quarkusDev
// after: force clean re-resolution
rm -rf ~/.gradle/caches/modules-2/files-2.1/io.quarkus
./gradlew quarkusDev --refresh-dependencies
Defensive patterns

Strategy: validation

Validate before calling

// Ensure matching Quarkus plugin/BOM versions before dev mode
String pluginVersion = "3.15.0";
String buildFile = Files.readString(Path.of("build.gradle"));
if (!buildFile.contains("enforcedPlatform('io.quarkus.platform:quarkus-bom:" + pluginVersion + "')")) {
  throw new IllegalStateException("Quarkus plugin and BOM versions are misaligned");
}

Try / catch

try {
  ./gradlew quarkusDev
} catch (GradleException e) {
  if (e.getMessage().contains("is missing artifactId")) {
    // delete io.quarkus entries from Gradle/Maven caches and re-run with --refresh-dependencies
  }
}

Prevention

When it happens

Trigger: Dev-mode startup (quarkusDev task) where the loaded poms.properties resource has no 'artifactId' property; raised within getQuarkusBootstrapResolver via getQuarkusGradleBootstrapResolver or getQuarkusMavenBootstrapResolver.

Common situations: Broken Gradle/Maven artifact caches; a pom.properties overwritten or truncated by a failed download; snapshot artifacts republished with incomplete metadata; custom shading/repackaging of Quarkus plugin jars that dropped the properties file contents.

Related errors


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