You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2018/12/25 23:37:59 UTC
[maven-archiver] 01/01: [MSHARED-787] Add optional buildEnvironment
information to the manifest
This is an automated email from the ASF dual-hosted git repository.
michaelo pushed a commit to branch MSHARED-787
in repository https://gitbox.apache.org/repos/asf/maven-archiver.git
commit 64e8b56386e72ad976a4ebb8360c2697f9187823
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Wed Dec 26 00:37:25 2018 +0100
[MSHARED-787] Add optional buildEnvironment information to the manifest
---
.../maven/archiver/ManifestConfiguration.java | 25 +++++++++++++++++++++-
.../org/apache/maven/archiver/MavenArchiver.java | 22 +++++++++++++++----
.../apache/maven/archiver/MavenArchiverTest.java | 17 +++++++++++----
3 files changed, 55 insertions(+), 9 deletions(-)
diff --git a/src/main/java/org/apache/maven/archiver/ManifestConfiguration.java b/src/main/java/org/apache/maven/archiver/ManifestConfiguration.java
index 7795c48..0f5e92a 100644
--- a/src/main/java/org/apache/maven/archiver/ManifestConfiguration.java
+++ b/src/main/java/org/apache/maven/archiver/ManifestConfiguration.java
@@ -57,6 +57,13 @@ public class ManifestConfiguration
private String classpathPrefix = "";
/**
+ * Add build environment information about Maven, JDK, and OS.
+ *
+ * @since 3.3.1
+ */
+ private boolean addBuildEnvironmentEntries;
+
+ /**
* Add default implementation entries if this is an extension specification.
*
* @since 2.1
@@ -101,6 +108,14 @@ public class ManifestConfiguration
}
/**
+ * @return {@link #addBuildEnvironmentEntries}
+ */
+ public boolean isAddBuildEnvironmentEntries()
+ {
+ return addBuildEnvironmentEntries;
+ }
+
+ /**
* @return {@link #addDefaultImplementationEntries}
*/
public boolean isAddDefaultImplementationEntries()
@@ -133,6 +148,14 @@ public class ManifestConfiguration
}
/**
+ * @param addBuildEnvironmentEntries add build environment information true/false.
+ */
+ public void setAddBuildEnvironmentEntries( boolean addBuildEnvironmentEntries )
+ {
+ this.addBuildEnvironmentEntries = addBuildEnvironmentEntries;
+ }
+
+ /**
* @param addDefaultImplementationEntries true to add default implementations false otherwise.
*/
public void setAddDefaultImplementationEntries( boolean addDefaultImplementationEntries )
@@ -250,7 +273,7 @@ public class ManifestConfiguration
* </ol>
* <br>
* <b>NOTE:</b> If you specify a layout type of 'custom' you MUST set this layout expression.
- * You can take a look at
+ * You can take a look at
* <ol>
* <li>{@link MavenArchiver#SIMPLE_LAYOUT}</li>
* <li>{@link MavenArchiver#SIMPLE_LAYOUT_NONUNIQUE}</li>
diff --git a/src/main/java/org/apache/maven/archiver/MavenArchiver.java b/src/main/java/org/apache/maven/archiver/MavenArchiver.java
index f925a39..c292a46 100644
--- a/src/main/java/org/apache/maven/archiver/MavenArchiver.java
+++ b/src/main/java/org/apache/maven/archiver/MavenArchiver.java
@@ -244,7 +244,10 @@ public class MavenArchiver
// Added basic entries
Manifest m = new Manifest();
- addCreatedByEntry( session, m, entries );
+ if ( config.isAddBuildEnvironmentEntries() )
+ {
+ handleBuildEnvironmentEntries( session, m, entries );
+ }
addCustomEntries( m, entries, config );
@@ -508,8 +511,6 @@ public class MavenArchiver
private void addCustomEntries( Manifest m, Map<String, String> entries, ManifestConfiguration config )
throws ManifestException
{
- addManifestAttribute( m, entries, "Build-Jdk", System.getProperty( "java.version" ) );
-
/*
* TODO: rethink this, it wasn't working Artifact projectArtifact = project.getArtifact(); if (
* projectArtifact.isSnapshot() ) { Manifest.Attribute buildNumberAttr = new Manifest.Attribute( "Build-Number",
@@ -615,6 +616,9 @@ public class MavenArchiver
Manifest manifest = getManifest( session, workingProject, archiveConfiguration );
// Configure the jar
+
+ // TODO here we would need to say archiver.setMinimalDefaultManifest(true) to avoid entry "Created-By: Plexus Achiver ${version}}
+
archiver.addConfiguredManifest( manifest );
archiver.setCompress( archiveConfiguration.isCompress() );
@@ -658,7 +662,7 @@ public class MavenArchiver
}
private void addCreatedByEntry( MavenSession session, Manifest m, Map<String, String> entries )
- throws ManifestException
+ throws ManifestException
{
String createdBy = "Apache Maven";
if ( session != null ) // can be null due to API backwards compatibility
@@ -672,6 +676,16 @@ public class MavenArchiver
addManifestAttribute( m, entries, "Created-By", createdBy );
}
+ private void handleBuildEnvironmentEntries( MavenSession session, Manifest m, Map<String, String> entries )
+ throws ManifestException
+ {
+ addCreatedByEntry( session, m, entries );
+ addManifestAttribute( m, entries, "Build-Jdk", String.format( "%s (%s)", System.getProperty( "java.version" ),
+ System.getProperty( "java.vm.vendor" ) ) );
+ addManifestAttribute( m, entries, "Build-Os", String.format( "%s (%s; %s)", System.getProperty( "os.name" ),
+ System.getProperty( "os.version" ), System.getProperty( "os.arch" ) ) );
+ }
+
private Artifact findArtifactWithFile( Set<Artifact> artifacts, File file )
{
for ( Artifact artifact : artifacts )
diff --git a/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java b/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java
index f4a496b..68c1c95 100644
--- a/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java
+++ b/src/test/java/org/apache/maven/archiver/MavenArchiverTest.java
@@ -482,6 +482,7 @@ public class MavenArchiverTest
config.setForced( true );
config.getManifest().setAddDefaultImplementationEntries( true );
config.getManifest().setAddDefaultSpecificationEntries( true );
+ config.getManifest().setAddBuildEnvironmentEntries( true );
// noinspection deprecation
MavenSession session = getDummySessionWithoutMavenVersion();
@@ -490,6 +491,11 @@ public class MavenArchiverTest
Attributes manifest = getJarFileManifest( jarFile ).getMainAttributes();
assertEquals( "Apache Maven", manifest.get( new Attributes.Name( "Created-By" ) ) ); // no version number
+ assertEquals( String.format( "%s (%s)", System.getProperty( "java.version" ),
+ System.getProperty( "java.vm.vendor" )), manifest.get( new Attributes.Name( "Build-Jdk" ) ) );
+ assertEquals( String.format( "%s (%s; %s)", System.getProperty( "os.name" ),
+ System.getProperty( "os.version" ), System.getProperty( "os.arch" )),
+ manifest.get( new Attributes.Name( "Build-Os" ) ) );
assertEquals( "archiver test", manifest.get( Attributes.Name.SPECIFICATION_TITLE ) );
assertEquals( "0.1", manifest.get( Attributes.Name.SPECIFICATION_VERSION ) );
@@ -498,8 +504,6 @@ public class MavenArchiverTest
assertEquals( "archiver test", manifest.get( Attributes.Name.IMPLEMENTATION_TITLE ) );
assertEquals( "0.1.1", manifest.get( Attributes.Name.IMPLEMENTATION_VERSION ) );
assertEquals( "Apache", manifest.get( Attributes.Name.IMPLEMENTATION_VENDOR ) );
-
- assertEquals( System.getProperty( "java.version" ), manifest.get( new Attributes.Name( "Build-Jdk" ) ) );
}
@Test
@@ -517,6 +521,7 @@ public class MavenArchiverTest
config.setForced( true );
config.getManifest().setAddDefaultImplementationEntries( true );
config.getManifest().setAddDefaultSpecificationEntries( true );
+ config.getManifest().setAddBuildEnvironmentEntries( true );
Map<String, String> manifestEntries = new HashMap<String, String>();
manifestEntries.put( "foo", "bar" );
@@ -539,6 +544,11 @@ public class MavenArchiverTest
Attributes manifest = jarFileManifest.getMainAttributes();
assertEquals( "Apache Maven 3.0.4", manifest.get( new Attributes.Name( "Created-By" ) ) );
+ assertEquals( String.format( "%s (%s)", System.getProperty( "java.version" ),
+ System.getProperty( "java.vm.vendor" )), manifest.get( new Attributes.Name( "Build-Jdk" ) ) );
+ assertEquals( String.format( "%s (%s; %s)", System.getProperty( "os.name" ),
+ System.getProperty( "os.version" ), System.getProperty( "os.arch" )),
+ manifest.get( new Attributes.Name( "Build-Os" ) ) );
assertEquals( "archiver test", manifest.get( Attributes.Name.SPECIFICATION_TITLE ) );
assertEquals( "0.1", manifest.get( Attributes.Name.SPECIFICATION_VERSION ) );
@@ -554,8 +564,6 @@ public class MavenArchiverTest
assertEquals( "olivier", manifest.get( new Attributes.Name( "first-name" ) ) );
assertEquals( "org.apache.maven.archiver", manifest.getValue( "Automatic-Module-Name" ) );
- assertEquals( System.getProperty( "java.version" ), manifest.get( new Attributes.Name( "Build-Jdk" ) ) );
-
assertTrue( StringUtils.isEmpty( manifest.getValue( new Attributes.Name( "keyWithEmptyValue" ) ) ) );
assertTrue( manifest.containsKey( new Attributes.Name( "keyWithEmptyValue" ) ) );
@@ -605,6 +613,7 @@ public class MavenArchiverTest
MavenArchiveConfiguration config = new MavenArchiveConfiguration();
config.setForced( true );
+ config.getManifest().setAddBuildEnvironmentEntries( true );
archiver.createArchive( session, project, config );
assertTrue( jarFile.exists() );