quarkusio/quarkus · error · MojoExecutionException
Classpath resource 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.
Solutions
- Re-download the quarkus-bootstrap-maven-resolver jar: remove it from ~/.m2/repository and build with -U
- Pin a matching quarkus-maven-plugin version to the Quarkus platform BOM
- 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
- Use unmodified artifacts from Maven Central or your trusted mirror
- Do not hand-edit jar metadata
- Verify artifact checksums when a mirror is involved
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
- Classpath resource is missing artifactId
- Classpath resource is missing version
- Failed to locate io.quarkus:quarkus-core-deployment on the…
- Failed to locate on the classpath
- Could not locate quarkus.properties on the classpath
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/c25e00fa775fc17a.
Report an issue: GitHub.
Appendix: 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)