From b4674dceb0cc737b3623619aed182fa39c697cb4 Mon Sep 17 00:00:00 2001 From: Michael Osipov <1983-01-06@gmx.net> Date: Wed, 26 Dec 2018 01:02:07 +0100 Subject: [PATCH] Add option to omit "Created-By" manifest entry (#110) This closes #110 --- .../plexus/archiver/jar/JarArchiver.java | 16 ++++++++- .../plexus/archiver/jar/Manifest.java | 36 +++++++++++++------ .../plexus/archiver/jar/ManifestTest.java | 5 +++ 3 files changed, 46 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/codehaus/plexus/archiver/jar/JarArchiver.java b/src/main/java/org/codehaus/plexus/archiver/jar/JarArchiver.java index 294e1c7e7..71ee01a75 100644 --- a/src/main/java/org/codehaus/plexus/archiver/jar/JarArchiver.java +++ b/src/main/java/org/codehaus/plexus/archiver/jar/JarArchiver.java @@ -144,6 +144,11 @@ public class JarArchiver */ private ArrayList indexJars; + /** + * Creates a minimal default manifest with {@code Manifest-Version: 1.0} only. + */ + private boolean minimalDefaultManifest = false; + /** * constructor */ @@ -166,6 +171,15 @@ public void setIndex( boolean flag ) index = flag; } + /** + * Set whether the default manifest is minimal, thus having only {@code Manifest-Version: 1.0} in it. + * + * @param minimalDefaultManifest true to create minimal default manifest + */ + public void setMinimalDefaultManifest( boolean minimalDefaultManifest ) { + this.minimalDefaultManifest = minimalDefaultManifest; + } + @SuppressWarnings( { "JavaDoc", "UnusedDeclaration" @@ -331,7 +345,7 @@ protected boolean hasVirtualFiles() protected Manifest createManifest() throws ArchiverException { - Manifest finalManifest = Manifest.getDefaultManifest(); + Manifest finalManifest = Manifest.getDefaultManifest( minimalDefaultManifest ); if ( ( manifest == null ) && ( manifestFile != null ) ) { diff --git a/src/main/java/org/codehaus/plexus/archiver/jar/Manifest.java b/src/main/java/org/codehaus/plexus/archiver/jar/Manifest.java index e22b433d5..df1fb83c4 100644 --- a/src/main/java/org/codehaus/plexus/archiver/jar/Manifest.java +++ b/src/main/java/org/codehaus/plexus/archiver/jar/Manifest.java @@ -755,31 +755,47 @@ public Iterator iterator() /** * Construct a manifest from Ant's default manifest file. * + * @param minimalDefaultManifest + * indicates whether a minimal manifest will be created, thus having only + * {@code Manifest-Version: 1.0} in it. + * * @return the default manifest. * - * @throws ArchiverException if there is a problem loading the - * default manifest + * @throws ArchiverException + * if there is a problem loading the default manifest */ - public static Manifest getDefaultManifest() + public static Manifest getDefaultManifest( boolean minimalDefaultManifest ) throws ArchiverException { final Manifest defaultManifest = new Manifest(); defaultManifest.getMainAttributes().putValue( "Manifest-Version", "1.0" ); - String createdBy = "Plexus Archiver"; + if ( !minimalDefaultManifest ) + { + String createdBy = "Plexus Archiver"; - final String plexusArchiverVersion = JdkManifestFactory.getArchiverVersion(); + final String plexusArchiverVersion = JdkManifestFactory.getArchiverVersion(); - if ( plexusArchiverVersion != null ) - { - createdBy += " " + plexusArchiverVersion; - } + if ( plexusArchiverVersion != null ) + { + createdBy += " " + plexusArchiverVersion; + } - defaultManifest.getMainAttributes().putValue( "Created-By", createdBy ); + defaultManifest.getMainAttributes().putValue( "Created-By", createdBy ); + } return defaultManifest; } + /** + * @see #getDefaultManifest(boolean) + */ + public static Manifest getDefaultManifest() + throws ArchiverException + { + return getDefaultManifest( false ); + } + /** * Construct an empty manifest */ diff --git a/src/test/java/org/codehaus/plexus/archiver/jar/ManifestTest.java b/src/test/java/org/codehaus/plexus/archiver/jar/ManifestTest.java index 31fe070c1..dc33d8ef3 100644 --- a/src/test/java/org/codehaus/plexus/archiver/jar/ManifestTest.java +++ b/src/test/java/org/codehaus/plexus/archiver/jar/ManifestTest.java @@ -220,6 +220,11 @@ public void testGetDefaultManifest() assertEquals( 2, mainAttributes.size() ); assertTrue( mainAttributes.containsKey( new java.util.jar.Attributes.Name( "Manifest-Version" ) ) ); assertTrue( mainAttributes.containsKey( new java.util.jar.Attributes.Name( "Created-By" ) ) ); + + mf = Manifest.getDefaultManifest( true ); + mainAttributes = mf.getMainAttributes(); + assertEquals( 1, mainAttributes.size() ); + assertTrue( mainAttributes.containsKey( new java.util.jar.Attributes.Name( "Manifest-Version" ) ) ); } public void checkMultiLineAttribute( String in, String expected )