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

  1. Remove the double-quote character from the manifest entry name in the mojo/plugin configuration
  2. Check the pom.xml <manifestEntries> section for stray or escaped quotes
  3. If the name comes from a Maven property, sanitize or correct the property value
  4. 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

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


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