Skip to content

Commit cbe8411

Browse files
committed
[MSHARED-798] Add defaultEntries option (true by default)
This closes #6
1 parent 7041fca commit cbe8411

File tree

4 files changed

+82
-13
lines changed

4 files changed

+82
-13
lines changed

src/main/java/org/apache/maven/archiver/ManifestConfiguration.java

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,14 @@ public class ManifestConfiguration
5656
*/
5757
private String classpathPrefix = "";
5858

59+
/**
60+
* Add default, reproducible entries {@code Created-By} and {@code Build-Jdk-Spec}.
61+
*
62+
* @since 3.4.0
63+
*/
64+
private boolean addDefaultEntries = true;
65+
66+
5967
/**
6068
* Add build environment information about Maven, JDK, and OS.
6169
*
@@ -107,6 +115,14 @@ public boolean isAddClasspath()
107115
return addClasspath;
108116
}
109117

118+
/**
119+
* @return {@link #addDefaultEntries}
120+
*/
121+
public boolean isAddDefaultEntries()
122+
{
123+
return addDefaultEntries;
124+
}
125+
110126
/**
111127
* @return {@link #addBuildEnvironmentEntries}
112128
*/
@@ -147,6 +163,14 @@ public void setAddClasspath( boolean addClasspath )
147163
this.addClasspath = addClasspath;
148164
}
149165

166+
/**
167+
* @param addDefaultEntries add default entries true/false.
168+
*/
169+
public void setAddDefaultEntries( boolean addDefaultEntries )
170+
{
171+
this.addDefaultEntries = addDefaultEntries;
172+
}
173+
150174
/**
151175
* @param addBuildEnvironmentEntries add build environment information true/false.
152176
*/

src/main/java/org/apache/maven/archiver/MavenArchiver.java

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,8 @@
5858
public class MavenArchiver
5959
{
6060

61+
private static final String CREATED_BY = "Maven Archiver";
62+
6163
/**
6264
* The simply layout.
6365
*/
@@ -243,11 +245,13 @@ protected Manifest getManifest( MavenSession session, MavenProject project, Mani
243245
{
244246
// TODO: Should we replace "map" with a copy? Note, that we modify it!
245247

246-
// Added basic entries
247248
Manifest m = new Manifest();
248-
addCreatedByEntry( session, m, entries );
249249

250-
addCustomEntries( m, entries, config );
250+
if ( config.isAddDefaultEntries() )
251+
{
252+
handleDefaultEntries( m, entries );
253+
}
254+
251255

252256
if ( config.isAddBuildEnvironmentEntries() )
253257
{
@@ -393,6 +397,8 @@ else if ( ManifestConfiguration.CLASSPATH_LAYOUT_TYPE_CUSTOM.equals( layoutType
393397
handleExtensions( project, entries, m );
394398
}
395399

400+
addCustomEntries( m, entries, config );
401+
396402
return m;
397403
}
398404

@@ -514,8 +520,6 @@ private void handleSpecificationEntries( MavenProject project, Map<String, Strin
514520
private void addCustomEntries( Manifest m, Map<String, String> entries, ManifestConfiguration config )
515521
throws ManifestException
516522
{
517-
addManifestAttribute( m, entries, "Build-Jdk-Spec", System.getProperty( "java.specification.version" ) );
518-
519523
/*
520524
* TODO: rethink this, it wasn't working Artifact projectArtifact = project.getArtifact(); if (
521525
* projectArtifact.isSnapshot() ) { Manifest.Attribute buildNumberAttr = new Manifest.Attribute( "Build-Number",
@@ -665,16 +669,17 @@ public void createArchive( MavenSession session, MavenProject project,
665669
archiver.createArchive();
666670
}
667671

668-
private void addCreatedByEntry( MavenSession session, Manifest m, Map<String, String> entries )
672+
private void handleDefaultEntries( Manifest m, Map<String, String> entries )
669673
throws ManifestException
670674
{
671-
String createdBy = "Maven Archiver";
672-
String archiverVersion = getArchiverVersion();
673-
if ( archiverVersion != null )
674-
{
675-
createdBy += " " + archiverVersion;
676-
}
677-
addManifestAttribute( m, entries, "Created-By", createdBy );
675+
String createdBy = CREATED_BY;
676+
String archiverVersion = getArchiverVersion();
677+
if ( archiverVersion != null )
678+
{
679+
createdBy += " " + archiverVersion;
680+
}
681+
addManifestAttribute( m, entries, "Created-By", createdBy );
682+
addManifestAttribute( m, entries, "Build-Jdk-Spec", System.getProperty( "java.specification.version" ) );
678683
}
679684

680685
private void handleBuildEnvironmentEntries( MavenSession session, Manifest m, Map<String, String> entries )

src/site/xdoc/index.xml.vm

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
&lt;index/&gt;
4242
&lt;<a href="#class_manifest">manifest</a>&gt;
4343
&lt;addClasspath/&gt;
44+
&lt;addDefaultEntries/&gt;
4445
&lt;addDefaultImplementationEntries/&gt;
4546
&lt;addDefaultSpecificationEntries/&gt;
4647
&lt;addBuildEnvironmentEntries/&gt;
@@ -191,6 +192,18 @@
191192
<td>boolean</td>
192193
<td></td>
193194
</tr>
195+
<tr>
196+
<td>addDefaultEntries</td>
197+
<td>
198+
If the manifest will contain these entries:
199+
<source>
200+
Created-By: Maven Archiver ${maven-archiver.version}
201+
Build-Jdk-Spec: ${java.specification.version}</source>
202+
The default value is <code>true</code>.
203+
</td>
204+
<td>boolean</td>
205+
<td>3.4.0</td>
206+
</tr>
194207
<tr>
195208
<td>addDefaultImplementationEntries</td>
196209
<td>

src/test/java/org/apache/maven/archiver/MavenArchiverTest.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -504,6 +504,33 @@ public void testDeprecatedCreateArchiveAPI()
504504
manifest.get( new Attributes.Name( "Build-Jdk-Spec" ) ) );
505505
}
506506

507+
@Test
508+
public void testMinimalManifestEntries()
509+
throws Exception
510+
{
511+
File jarFile = new File( "target/test/dummy.jar" );
512+
JarArchiver jarArchiver = getCleanJarArchiver( jarFile );
513+
514+
MavenArchiver archiver = getMavenArchiver( jarArchiver );
515+
516+
MavenSession session = getDummySession();
517+
MavenProject project = getDummyProject();
518+
MavenArchiveConfiguration config = new MavenArchiveConfiguration();
519+
config.setForced( true );
520+
config.getManifest().setAddDefaultEntries( false );
521+
522+
archiver.createArchive( session, project, config );
523+
assertTrue( jarFile.exists() );
524+
525+
final Manifest jarFileManifest = getJarFileManifest( jarFile );
526+
Attributes manifest = jarFileManifest.getMainAttributes();
527+
528+
assertEquals( 1, manifest.size() );
529+
assertEquals( new Attributes.Name( "Manifest-Version" ), manifest.keySet().iterator().next() );
530+
assertEquals( "1.0", manifest.getValue( "Manifest-Version" ) );
531+
}
532+
533+
507534
@Test
508535
public void testManifestEntries()
509536
throws Exception

0 commit comments

Comments
 (0)