[MRRESOURCES-114] use reproducible project.build.outputTimestamp
diff --git a/pom.xml b/pom.xml
index 7976702..9879260 100644
--- a/pom.xml
+++ b/pom.xml
@@ -115,6 +115,11 @@
 
     <!-- maven shared -->
     <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-archiver</artifactId>
+      <version>3.5.0</version>
+    </dependency>
+    <dependency>
       <groupId>org.apache.maven.shared</groupId>
       <artifactId>maven-artifact-resolver</artifactId>
       <version>1.0</version>
diff --git a/src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java b/src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java
index d64fe20..b7b9718 100644
--- a/src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java
+++ b/src/main/java/org/apache/maven/plugin/resources/remote/ProcessRemoteResourcesMojo.java
@@ -56,6 +56,7 @@
 
 import org.apache.commons.io.output.DeferredFileOutputStream;
 import org.apache.maven.ProjectDependenciesResolver;
+import org.apache.maven.archiver.MavenArchiver;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -428,6 +429,14 @@
     protected boolean excludeTransitive;
 
     /**
+     * Timestamp for reproducible output archive entries, either formatted as ISO 8601
+     * <code>yyyy-MM-dd'T'HH:mm:ssXXX</code> or as an int representing seconds since the epoch (like
+     * <a href="https://reproducible-builds.org/docs/source-date-epoch/">SOURCE_DATE_EPOCH</a>).
+     */
+    @Parameter( defaultValue = "${project.build.outputTimestamp}" )
+    private String outputTimestamp;
+
+    /**
      */
     @Component( hint = "default" )
     protected ProjectDependenciesResolver dependencyResolver;
@@ -1040,8 +1049,12 @@
         context.put( KEY_PROJECTS_ORGS, null );
         // the following properties are cheap to calculate, so we provide them eagerly
 
+        // Reproducible Builds: try to use reproducible output timestamp 
+        MavenArchiver archiver = new MavenArchiver();
+        Date outputDate = archiver.parseOutputTimestamp( outputTimestamp );
+
         String inceptionYear = project.getInceptionYear();
-        String year = new SimpleDateFormat( "yyyy" ).format( new Date() );
+        String year = new SimpleDateFormat( "yyyy" ).format( ( outputDate == null ) ? new Date() : outputDate );
 
         if ( StringUtils.isEmpty( inceptionYear ) )
         {
diff --git a/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java b/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java
index 16842b0..24c928f 100644
--- a/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java
+++ b/src/test/java/org/apache/maven/plugin/resources/remote/RemoteResourcesMojoTest.java
@@ -327,7 +327,7 @@
 
         String data = FileUtils.fileRead( file );
         assertTrue( data.contains( "project.name: Test Project default-filterbundles" ) );
-        assertTrue( data.contains( "projectTimespan: 2007-" ) );
+        assertTrue( data.contains( "projectTimespan: 2007-2019" ) );
         assertTrue( data.contains( "projects: [" ) );
         assertTrue( data.contains( "projectsSortedByOrganization: {" ) );
     }
diff --git a/src/test/resources/unit/rrmojotest/process-plugin-config.xml b/src/test/resources/unit/rrmojotest/process-plugin-config.xml
index 8d3ab14..0f97b40 100644
--- a/src/test/resources/unit/rrmojotest/process-plugin-config.xml
+++ b/src/test/resources/unit/rrmojotest/process-plugin-config.xml
@@ -26,6 +26,7 @@
         <configuration>
           <localRepository>${localRepository}</localRepository>
           <encoding>UTF-8</encoding>
+          <outputTimestamp>2019-12-31T12:00:00Z</outputTimestamp>
         </configuration>
       </plugin>
     </plugins>