You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2019/10/05 17:23:28 UTC
[maven-assembly-plugin] branch MASSEMBLY-921 updated: use the new
project.build.outputTimestamp property
This is an automated email from the ASF dual-hosted git repository.
hboutemy pushed a commit to branch MASSEMBLY-921
in repository https://gitbox.apache.org/repos/asf/maven-assembly-plugin.git
The following commit(s) were added to refs/heads/MASSEMBLY-921 by this push:
new a6650e4 use the new project.build.outputTimestamp property
a6650e4 is described below
commit a6650e496997424a64b50f9b13862a8dfa878c9e
Author: Hervé Boutemy <hb...@apache.org>
AuthorDate: Sat Oct 5 19:23:23 2019 +0200
use the new project.build.outputTimestamp property
---
src/it/projects/reproducible/pom.xml | 2 +-
src/it/projects/reproducible/verify.groovy | 6 +++---
.../maven/plugins/assembly/archive/AssemblyArchiver.java | 5 +++--
.../plugins/assembly/archive/DefaultAssemblyArchiver.java | 13 +++++++------
.../assembly/archive/archiver/AssemblyProxyArchiver.java | 4 ++--
.../plugins/assembly/mojos/AbstractAssemblyMojo.java | 15 +++++++++------
.../assembly/archive/DefaultAssemblyArchiverTest.java | 12 ++++++------
7 files changed, 31 insertions(+), 26 deletions(-)
diff --git a/src/it/projects/reproducible/pom.xml b/src/it/projects/reproducible/pom.xml
index b870caa..6b9f7ca 100644
--- a/src/it/projects/reproducible/pom.xml
+++ b/src/it/projects/reproducible/pom.xml
@@ -36,7 +36,7 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <source-date-epoch>1566419331</source-date-epoch>
+ <project.build.outputTimestamp>2019-08-21T18:28:52Z</project.build.outputTimestamp>
</properties>
<build>
diff --git a/src/it/projects/reproducible/verify.groovy b/src/it/projects/reproducible/verify.groovy
index f80fc4b..4e4f945 100644
--- a/src/it/projects/reproducible/verify.groovy
+++ b/src/it/projects/reproducible/verify.groovy
@@ -25,6 +25,6 @@ File deployDir = new File( basedir, 'target/repo/org/apache/maven/its/reproducib
assert deployDir.exists()
-assert new File( deployDir, 'reproducible-1.0-src.zip.sha1' ).text == '079d0af3f42cd8cd3faad6b49547298cf8a3eb39'
-assert new File( deployDir, 'reproducible-1.0-src.tar.sha1' ).text == '6433b2101247b3686faade1f4e81c972dbfe6d2f'
-assert new File( deployDir, 'reproducible-1.0-src.jar.sha1' ).text == '1bc78c1141aae276dcaef36c2a336cbb6014b220'
+assert new File( deployDir, 'reproducible-1.0-src.zip.sha1' ).text == '5ce34fc133d47cbc9c81195877dbe10b9ec7d864'
+assert new File( deployDir, 'reproducible-1.0-src.tar.sha1' ).text == '0b9dc1da069705a93b4954a198c18bd248822bf8'
+assert new File( deployDir, 'reproducible-1.0-src.jar.sha1' ).text == '780f9c7502b71d073ca4c8b3be77c0d435abe2fe'
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/AssemblyArchiver.java b/src/main/java/org/apache/maven/plugins/assembly/archive/AssemblyArchiver.java
index 97ef85f..36d2b4a 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/AssemblyArchiver.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/AssemblyArchiver.java
@@ -25,6 +25,7 @@ import org.apache.maven.plugins.assembly.format.AssemblyFormattingException;
import org.apache.maven.plugins.assembly.model.Assembly;
import java.io.File;
+import java.util.Date;
/**
* Creates an archive
@@ -55,13 +56,13 @@ public interface AssemblyArchiver
* @param configSource The {@link org.apache.maven.plugins.assembly.AssemblerConfigurationSource}
* @param recompressZippedFiles recompress zipped files.
* @param mergeManifestMode How to handle already existing Manifest files (skip, merge, mergewithoutmain)
- * @param sourceDateEpoch Value like SOURCE_DATE_EPOCH as defined in Reproducible Builds
+ * @param sourceDateEpoch Timestamp for reproducible archive entries
* @return The resulting archive file.
* @throws ArchiveCreationException when creation fails
* @throws org.apache.maven.plugins.assembly.format.AssemblyFormattingException when formatting fails
* @throws org.apache.maven.plugins.assembly.InvalidAssemblerConfigurationException when the configuration is bad
*/
File createArchive( Assembly assembly, String fullName, String format, AssemblerConfigurationSource configSource,
- boolean recompressZippedFiles, String mergeManifestMode, int sourceDateEpoch )
+ boolean recompressZippedFiles, String mergeManifestMode, Date outputTimestamp )
throws ArchiveCreationException, AssemblyFormattingException, InvalidAssemblerConfigurationException;
}
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java b/src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java
index 47e0776..6ee3e4c 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiver.java
@@ -73,6 +73,7 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.Date;
import java.util.List;
import java.util.Map;
@@ -134,7 +135,7 @@ public class DefaultAssemblyArchiver
@Override
public File createArchive( final Assembly assembly, final String fullName, final String format,
final AssemblerConfigurationSource configSource, boolean recompressZippedFiles,
- String mergeManifestMode, int sourceDateEpoch )
+ String mergeManifestMode, Date outputTimestamp )
throws ArchiveCreationException, AssemblyFormattingException, InvalidAssemblerConfigurationException
{
validate( assembly );
@@ -172,7 +173,7 @@ public class DefaultAssemblyArchiver
final Archiver archiver =
createArchiver( format, assembly.isIncludeBaseDirectory(), basedir, configSource, containerHandlers,
- recompressZippedFiles, mergeManifestMode, sourceDateEpoch );
+ recompressZippedFiles, mergeManifestMode, outputTimestamp );
archiver.setDestFile( destFile );
@@ -284,7 +285,7 @@ public class DefaultAssemblyArchiver
protected Archiver createArchiver( final String format, final boolean includeBaseDir, final String finalName,
final AssemblerConfigurationSource configSource,
final List<ContainerDescriptorHandler> containerHandlers,
- boolean recompressZippedFiles, String mergeManifestMode, int sourceDateEpoch )
+ boolean recompressZippedFiles, String mergeManifestMode, Date outputTimestamp )
throws NoSuchArchiverException
{
Archiver archiver;
@@ -346,10 +347,10 @@ public class DefaultAssemblyArchiver
archiver.setIgnorePermissions( configSource.isIgnorePermissions() );
archiver.setForced( !configSource.isUpdateOnly() );
- if ( sourceDateEpoch != 0 )
+ // configure for Reproducible Builds based on outputTimestamp value
+ if ( outputTimestamp != null )
{
- // configure for Reproducible Builds based on source date epoch value
- archiver.configureReproducible( sourceDateEpoch );
+ archiver.configureReproducible( outputTimestamp );
}
return archiver;
diff --git a/src/main/java/org/apache/maven/plugins/assembly/archive/archiver/AssemblyProxyArchiver.java b/src/main/java/org/apache/maven/plugins/assembly/archive/archiver/AssemblyProxyArchiver.java
index 8e5f978..a8ec9ba 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/archive/archiver/AssemblyProxyArchiver.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/archive/archiver/AssemblyProxyArchiver.java
@@ -1050,9 +1050,9 @@ public class AssemblyProxyArchiver
}
@Override
- public void configureReproducible( int sourceDateEpoch )
+ public void configureReproducible( Date outputTimestamp )
{
- delegate.configureReproducible( sourceDateEpoch );
+ delegate.configureReproducible( outputTimestamp );
}
@Override
diff --git a/src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java b/src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java
index 8e440e7..4c745e0 100644
--- a/src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java
+++ b/src/main/java/org/apache/maven/plugins/assembly/mojos/AbstractAssemblyMojo.java
@@ -20,6 +20,7 @@ package org.apache.maven.plugins.assembly.mojos;
*/
import org.apache.maven.archiver.MavenArchiveConfiguration;
+import org.apache.maven.archiver.MavenArchiver;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.plugin.AbstractMojo;
@@ -50,6 +51,7 @@ import org.codehaus.plexus.interpolation.fixed.PropertiesBasedValueSource;
import javax.annotation.Nonnull;
import java.io.File;
import java.util.Collections;
+import java.util.Date;
import java.util.List;
import java.util.Properties;
@@ -391,14 +393,12 @@ public abstract class AbstractAssemblyMojo
private List<String> delimiters;
/**
- * Value like SOURCE_DATE_EPOCH as <a href="https://reproducible-builds.org/specs/source-date-epoch/">defined in
- * Reproducible Builds</a>: a UNIX timestamp, defined as the number of seconds, excluding leap seconds, since 01 Jan
- * 1970 00:00:00 UTC.
+ * Timestamp for reproducible archive entries.
*
* @since 3.2.0
*/
- @Parameter( name = "source-date-epoch", defaultValue = "${source-date-epoch}" )
- private int sourceDateEpoch;
+ @Parameter( defaultValue = "${project.build.outputTimestamp}" )
+ private String outputTimestamp;
public static FixedStringSearchInterpolator mainProjectInterpolator( MavenProject mainProject )
{
@@ -460,6 +460,9 @@ public abstract class AbstractAssemblyMojo
// TODO: include dependencies marked for distribution under certain formats
// TODO: how, might we plug this into an installer, such as NSIS?
+ MavenArchiver mavenArchiver = new MavenArchiver();
+ Date outputDate = mavenArchiver.parseOutputTimestamp( outputTimestamp );
+
boolean warnedAboutMainProjectArtifact = false;
for ( final Assembly assembly : assemblies )
{
@@ -482,7 +485,7 @@ public abstract class AbstractAssemblyMojo
{
final File destFile =
assemblyArchiver.createArchive( assembly, fullName, format,
- this, isRecompressZippedFiles(), getMergeManifestMode(), sourceDateEpoch );
+ this, isRecompressZippedFiles(), getMergeManifestMode(), outputDate );
final MavenProject project = getProject();
final String type = project.getArtifact().getType();
diff --git a/src/test/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiverTest.java b/src/test/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiverTest.java
index f0c470f..2b1f23f 100644
--- a/src/test/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiverTest.java
+++ b/src/test/java/org/apache/maven/plugins/assembly/archive/DefaultAssemblyArchiverTest.java
@@ -127,7 +127,7 @@ public class DefaultAssemblyArchiverTest
mm.replayAll();
final DefaultAssemblyArchiver archiver = createSubject( macMgr, null, null );
- archiver.createArchive( new Assembly(), "full-name", "zip", configSource, false, null, 0 );
+ archiver.createArchive( new Assembly(), "full-name", "zip", configSource, false, null, null );
mm.verifyAll();
}
@@ -196,7 +196,7 @@ public class DefaultAssemblyArchiverTest
final DefaultAssemblyArchiver subject = createSubject( macMgr, Collections.singletonList( phase ), null );
- subject.createArchive( assembly, "full-name", "zip", configSource, false, null, 0 );
+ subject.createArchive( assembly, "full-name", "zip", configSource, false, null, null );
mm.verifyAll();
}
@@ -245,7 +245,7 @@ public class DefaultAssemblyArchiverTest
final DefaultAssemblyArchiver subject =
createSubject( macArchiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
- subject.createArchiver( "dummy", false, "finalName", configSource, null, false, null, 0 );
+ subject.createArchiver( "dummy", false, "finalName", configSource, null, false, null, null );
assertEquals( simpleConfig, archiver.getSimpleConfig() );
@@ -273,7 +273,7 @@ public class DefaultAssemblyArchiverTest
final DefaultAssemblyArchiver subject = setupStdExpectations( mm, macArchiverManager, configSource );
- subject.createArchiver( "tar", false, "finalName", configSource, null, false, null, 0 );
+ subject.createArchiver( "tar", false, "finalName", configSource, null, false, null, null );
assertNull( ttArchiver.compressionMethod );
assertEquals( TarLongFileMode.fail, ttArchiver.longFileMode );
@@ -319,7 +319,7 @@ public class DefaultAssemblyArchiverTest
expect( configSource.getMavenSession() ).andReturn( null ).anyTimes();
final DefaultAssemblyArchiver subject = setupStdExpectations( mm, macArchiverManager, configSource );
- subject.createArchiver( "war", false, null, configSource, null, false, null, 0 );
+ subject.createArchiver( "war", false, null, configSource, null, false, null, null );
assertFalse( twArchiver.ignoreWebxml );
}
@@ -350,7 +350,7 @@ public class DefaultAssemblyArchiverTest
final DefaultAssemblyArchiver subject =
createSubject( macArchiverManager, new ArrayList<AssemblyArchiverPhase>(), null );
- subject.createArchiver( "zip", false, null, configSource, null, false, null, 0 );
+ subject.createArchiver( "zip", false, null, configSource, null, false, null, null );
}
@Test