quarkusio/quarkus · error · GradleException
Classpath resource + pomPropsPath + is missing groupId
Error message
Classpath resource + pomPropsPath + is missing groupId
What it means
QuarkusGradleUtils/QuarkusDev loads a quarkus-build-catalog poms.properties resource from the dev-mode classpath to determine the GAV coordinates of the quarkus-bootstrap resolver dependency. If the properties file exists but lacks the groupId key, QuarkusDev.getQuarkusBootstrapResolver throws this GradleException. It indicates a malformed or truncated quarkus maven/gradle plugin properties resource on the classpath, typically from a broken Quarkus installation or corrupted local repository artifact.
Source
Thrown at devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusDev.java:641
private Dependency getQuarkusMavenBootstrapResolver() {
return getQuarkusBootstrapResolver("quarkus-bootstrap-maven-resolver");
}
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")) {View on GitHub (pinned to e1c734241f)
Solutions
- Clear the cached quarkus plugin artifacts: delete io/quarkus entries from ~/.gradle/caches/modules-2 and ~/.m2/repository/io/quarkus, then re-run with --refresh-dependencies.
- Align the Quarkus Gradle plugin version with the Quarkus platform/BOM version in build.gradle.
- Verify the poms.properties file on the classpath contains groupId/artifactId/version keys.
- Re-import/refresh the project in the IDE to rebuild the classpath.
Example fix
// before: mismatched plugin and platform
id 'io.quarkus' version '3.0.0.Final'
implementation enforcedPlatform('io.quarkus.platform:quarkus-bom:3.15.0')
// after
id 'io.quarkus' version '3.15.0'
implementation enforcedPlatform('io.quarkus.platform:quarkus-bom:3.15.0') Defensive patterns
Strategy: validation
Validate before calling
// Verify the plugin artifact metadata is intact before running dev mode
Process p = new ProcessBuilder("unzip", "-p",
"/path/to/quarkus-gradle-plugin.jar", "META-INF/maven/io.quarkus/pom.properties")
.start();
String props = new String(p.getInputStream().readAllBytes());
if (!props.contains("groupId=")) throw new IllegalStateException("Corrupted Quarkus plugin artifact; clear caches"); Try / catch
try {
./gradlew quarkusDev
} catch (GradleException e) {
if (e.getMessage().contains("is missing groupId")) {
// purge ~/.gradle/caches/modules-2 and ~/.m2/repository io.quarkus entries, re-run with --refresh-dependencies
}
} Prevention
- Keep Quarkus Gradle plugin and platform BOM versions identical.
- Run CI builds with --refresh-dependencies periodically to self-heal caches.
- Avoid manually editing files under ~/.m2/repository or Gradle module caches.
- Pin Quarkus versions in settings.gradle pluginManagement.
When it happens
Trigger: Running a dev-mode task (quarkusDev) where the resolved poms.properties classpath resource does not contain a 'groupId' entry; happens inside getQuarkusBootstrapResolver, invoked by getQuarkusGradleBootstrapResolver and getQuarkusMavenBootstrapResolver.
Common situations: Corrupted entries in ~/.m2/repository or Gradle cache for quarkus plugin artifacts; a partially downloaded/overwritten pom.properties; mixing mismatched Quarkus Gradle plugin and Quarkus BOM versions; manually editing or excluding plugin resources.
Related errors
- Classpath resource + pomPropsPath + is missing artifactId
- Classpath resource + pomPropsPath + is missing version
- Failed to locate io.quarkus:quarkus-core-deployment on the a
- Failed to locate project's classes directory
- Failed to process + artifactPath
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/024e26202e4daea0.
Report an issue: GitHub.