{"record":{"id":"82a7e6dc223ceaab","repo":"quarkusio/quarkus","slug":"manifest-entry-name-key-is-invalid-character-82a7e6","errorCode":null,"errorMessage":"Manifest entry name ${key} is invalid. \" characters are not allowed.","messagePattern":"Manifest entry name (.+?) is invalid\\. \" characters are not allowed\\.","errorType":"validation","errorClass":"MojoExecutionException","httpStatus":null,"severity":"error","filePath":"devtools/maven/src/main/java/io/quarkus/maven/QuarkusBootstrapProvider.java","lineNumber":447,"sourceCode":"                        .getReferencedStrings()) {\n                    String referenceValue = mojo.mavenSession().getUserProperties().getProperty(reference);\n                    if (referenceValue != null) {\n                        effectiveProperties.setProperty(reference, referenceValue);\n                        continue;\n                    }\n\n                    referenceValue = projectProperties.getProperty(reference);\n                    if (referenceValue != null) {\n                        effectiveProperties.setProperty(reference, referenceValue);\n                    }\n                }\n            }\n            return effectiveProperties;\n        }\n\n        private String toManifestAttributeKey(String key) throws MojoExecutionException {\n            if (key.contains(\"\\\"\")) {\n                throw new MojoExecutionException(\"Manifest entry name \" + key + \" is invalid. \\\" characters are not allowed.\");\n            }\n            return String.format(\"%s.\\\"%s\\\"\", MANIFEST_ATTRIBUTES_PROPERTY_PREFIX, key);\n        }\n\n        private String toManifestSectionAttributeKey(String section, String key) throws MojoExecutionException {\n            if (section.contains(\"\\\"\")) {\n                throw new MojoExecutionException(\n                        \"Manifest section name \" + section + \" is invalid. \\\" characters are not allowed.\");\n            }\n            if (key.contains(\"\\\"\")) {\n                throw new MojoExecutionException(\"Manifest entry name \" + key + \" is invalid. \\\" characters are not allowed.\");\n            }\n            return String.format(\"%s.\\\"%s\\\".\\\"%s\\\"\", MANIFEST_SECTIONS_PROPERTY_PREFIX, section,\n                    key);\n        }\n\n        protected CuratedApplication bootstrapApplication(QuarkusBootstrapMojo mojo, LaunchMode mode,\n                Consumer<QuarkusBootstrap.Builder> builderCustomizer) throws MojoExecutionException {","sourceCodeStart":429,"sourceCodeEnd":465,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/devtools/maven/src/main/java/io/quarkus/maven/QuarkusBootstrapProvider.java#L429-L465","documentation":"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.","triggerScenarios":"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.","commonSituations":"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\">.","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)"],"exampleFix":"// pom.xml\n// before\n<manifestEntries>\n  <Implementation-\"Title\">MyApp</Implementation-\"Title\">\n</manifestEntries>\n// after\n<manifestEntries>\n  <Implementation-Title>MyApp</Implementation-Title>\n</manifestEntries>","handlingStrategy":"validation","validationCode":"// Validate manifest entry names before building\nString key = manifestEntry.getKey();\nif (key.contains(\"\\\"\")) {\n    throw new IllegalArgumentException(\"Manifest entry name '\" + key + \"' must not contain double quotes\");\n}","typeGuard":"boolean isValidManifestEntryName(String key) {\n    return key != null && !key.contains(\"\\\"\");\n}","tryCatchPattern":"try {\n    quarkusBuildMojo.execute();\n} catch (MojoExecutionException e) {\n    if (e.getMessage().contains(\"Manifest entry name\") && e.getMessage().contains(\"not allowed\")) {\n        getLog().error(\"Fix the manifestEntries key in pom.xml: remove the double-quote character. \" + e.getMessage());\n    } else { throw e; }\n}","preventionTips":["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"],"tags":["maven","manifest","configuration","validation"],"backgroundTag":"invalid-manifest-entry-name","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}