The problem has indeed been masked because of other fixes.
3 things left to consider:
- I think newlines in manifest values hasn't actually been fixed in maven-archiver
- maven-jar-plugin-2.0 has an explicit dependency on maven-archiver-2.0 so jar-plugin pom needs updating if archiver-2.1 is to be used.
- The Embedded error: The attribute ... may not occur more than once in the same section seems to be a new problem (regression) in archiver-2.1 - I've reproduced it, and it stops me from testing the newlines issue. It's not restricted to the Specification-Title attribute.
The issue at hand has been masked by changes in
The fix in
MJAR-39 ensures that the Specification-Title manifest attribute (if included) now contains project name (not project description)
However, I found (like you, Dennis) that the Specification-Title was not in the jar's manifest at all.
This is in turn an effect of
MJAR-38 whereby the Specification-... elements are not included by default.
I've just tested this in maven-archiver-2.1, which was released on 27th June, and descriptions containing newline-tab combinations no longer cause an invalid header error.
However , the pom for maven-jar-plugin-2.0 has an explicit dependency on maven-archiver-2.0:
This means that by default it's still using the old archiver.
When I updated my local repository's pom for maven-jar-plugin-2.0 to require version 2.1, I was able to test the new version.
Can the pom be changed, or a new version of it released? I'm not sure how these things are done.
I discovered that the deviation from the jar spec is actually the inclusion of linefeeds in the continuation lines which I don't think has actually been fixed.
For reference, here's part of the jar spec from Sun, indicating why the problem happened:
newline: CR LF | LF | CR (not followed by LF)
value: SPACE *otherchar newline *continuation
continuation: SPACE *otherchar newline
otherchar: any UTF-8 character except NUL, CR and LF
In an attribute value, a newline followed by a tab is not valid; a newline followed by a space to indicate a continuation would be valid.
If there are further similar problems with jar manifests, then it may be the plexus jar class that's at fault.
I don't think it should allow a manifest attrubite to contain \r or \n characters.
To ensure Maven doesn't add \r or \n chars to manifest attributes, they could be stripped out in MavenArchiver:
private void addManifestAttribute( Manifest manifest, String key, String value )
if ( value != null && !"".equals( value ) )
Manifest.Attribute attr = new Manifest.Attribute( key, value );
manifest.addConfiguredAttribute( attr );
I don't know why you get "Embedded error: The attribute "Specification-Title" may not occur more than once in the same section"
I got the same error with the following configuration when I was trying to test:
Here's a manifest entry with a newline
followed by a tab (actually several tabs)
This doesn't occur with archiver-2.0; in 2.0 the dodgy entry is successfully written to the manifest with the incorrect manifest attribute format:
Dodgy-Entry: Here's a manifest entry with a newline
y a tab (actually several tabs)