quarkusio/quarkus · error · MojoExecutionException
Manifest entry name ${key} is invalid. " characters are not
Error message
Manifest entry name ${key} is invalid. " characters are not allowed. What it means
QuarkusBootstrapProvider.toManifestAttributeKey encodes each user-supplied manifest entry from the mojo's manifestEntries into a system property named quarkus.jar.manifest.attributes."<key>". Double quotes are the property-name delimiter, so an entry name containing a double quote would corrupt the encoded key; the method therefore rejects it with a MojoExecutionException before any property is set.
Source
Thrown at devtools/maven/src/main/java/io/quarkus/maven/QuarkusBootstrapProvider.java:447
.getReferencedStrings()) {
String referenceValue = mojo.mavenSession().getUserProperties().getProperty(reference);
if (referenceValue != null) {
effectiveProperties.setProperty(reference, referenceValue);
continue;
}
referenceValue = projectProperties.getProperty(reference);
if (referenceValue != null) {
effectiveProperties.setProperty(reference, referenceValue);
}
}
}
return effectiveProperties;
}
private String toManifestAttributeKey(String key) throws MojoExecutionException {
if (key.contains("\"")) {
throw new MojoExecutionException("Manifest entry name " + key + " is invalid. \" characters are not allowed.");
}
return String.format("%s.\"%s\"", MANIFEST_ATTRIBUTES_PROPERTY_PREFIX, key);
}
private String toManifestSectionAttributeKey(String section, String key) throws MojoExecutionException {
if (section.contains("\"")) {
throw new MojoExecutionException(
"Manifest section name " + section + " is invalid. \" characters are not allowed.");
}
if (key.contains("\"")) {
throw new MojoExecutionException("Manifest entry name " + key + " is invalid. \" characters are not allowed.");
}
return String.format("%s.\"%s\".\"%s\"", MANIFEST_SECTIONS_PROPERTY_PREFIX, section,
key);
}
protected CuratedApplication bootstrapApplication(QuarkusBootstrapMojo mojo, LaunchMode mode,
Consumer<QuarkusBootstrap.Builder> builderCustomizer) throws MojoExecutionException {View on GitHub (pinned to e1c734241f)
Solutions
- Remove the double-quote character from the manifest entry name in the mojo/plugin configuration
- Check the pom.xml <manifestEntries> section for stray or escaped quotes
- If the name comes from a Maven property, sanitize or correct the property value
- Rename the entry to a valid JAR manifest attribute name (alphanumeric, dash, underscore)
Example fix
// pom.xml // before <manifestEntries> <Implementation-"Title">MyApp</Implementation-"Title"> </manifestEntries> // after <manifestEntries> <Implementation-Title>MyApp</Implementation-Title> </manifestEntries>
Defensive patterns
Strategy: validation
Validate before calling
// Validate manifest entry names before building
String key = manifestEntry.getKey();
if (key.contains("\"")) {
throw new IllegalArgumentException("Manifest entry name '" + key + "' must not contain double quotes");
} Type guard
boolean isValidManifestEntryName(String key) {
return key != null && !key.contains("\"");
} Try / catch
try {
quarkusBuildMojo.execute();
} catch (MojoExecutionException e) {
if (e.getMessage().contains("Manifest entry name") && e.getMessage().contains("not allowed")) {
getLog().error("Fix the manifestEntries key in pom.xml: remove the double-quote character. " + e.getMessage());
} else { throw e; }
} Prevention
- Keep manifest entry names to alphanumerics, dashes, underscores and slashes
- Never interpolate unvalidated user input into manifest entry names in pom.xml
- Lint the POM for stray quote characters in plugin configuration
- Review any generated/templated manifest configuration for escaped-quote bugs
When it happens
Trigger: A <manifestEntries> entry in the maven-jar-plugin-style configuration (or quarkus:build mojo config) has an attribute name containing the " character; getBuildSystemProperties iterates manifestEntries and calls toManifestAttributeKey which detects the quote and throws.
Common situations: Copy-pasted manifest entry names containing stray quotes; templated/generated entry names where a placeholder was substituted with a quoted string; typos like <Implementation-Title"foo">.
Related errors
- Manifest section name ${section} is invalid. " characters ar
- Unrecognized dependency flag '<trimmed>'. Supported flags: O
- Parameter 'mode' was set to '<mode>' while expected one of '
- Parameter 'mode' was set to '<mode>' while expected one of '
- Parameter 'mode' was set to '<mode>' while expected one of '
AI-assisted analysis of quarkusio/quarkus@e1c734241f (2026-09-05).
Data as JSON: /api/errors/82a7e6dc223ceaab.
Report an issue: GitHub.