This is an automated email from the ASF dual-hosted git repository. hboutemy pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven-release.git
The following commit(s) were added to refs/heads/master by this push: new cfcc8ca [MRELEASE-1029] update project.build.outputTimestamp property cfcc8ca is described below commit cfcc8ca59e483227dcbff8935f3b95d1d3344c13 Author: Hervé Boutemy <hbout...@apache.org> AuthorDate: Sat Nov 23 18:32:02 2019 +0100 [MRELEASE-1029] update project.build.outputTimestamp property to get an up-to-date timestamp value for Reproducible Builds during releases --- .../release/phase/AbstractRewritePomsPhase.java | 47 ++++++++++++++++++++++ .../AbstractRewritingReleasePhaseTestCase.java | 1 + .../basic-pom/expected-pom-with-schema.xml | 9 +++++ .../basic-pom/expected-pom.xml | 9 +++++ .../rewrite-for-development/basic-pom/pom.xml | 9 +++++ .../basic-pom/expected-pom-with-schema.xml | 9 +++++ .../rewrite-for-release/basic-pom/expected-pom.xml | 9 +++++ .../projects/rewrite-for-release/basic-pom/pom.xml | 9 +++++ pom.xml | 1 + 9 files changed, 103 insertions(+) diff --git a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java index 6b1dfc2..4da8199 100644 --- a/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java +++ b/maven-release-manager/src/main/java/org/apache/maven/shared/release/phase/AbstractRewritePomsPhase.java @@ -20,11 +20,15 @@ package org.apache.maven.shared.release.phase; */ import java.io.File; +import java.text.DateFormat; +import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collection; +import java.util.Date; import java.util.List; import java.util.Map; import java.util.Properties; +import java.util.TimeZone; import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.ArtifactUtils; @@ -105,6 +109,13 @@ public abstract class AbstractRewritePomsPhase this.modelETL = modelETL; } + private long startTime = -1 * 1000; + + public void setStartTime( long startTime ) + { + this.startTime = startTime; + } + protected abstract String getPomSuffix(); @Override @@ -166,6 +177,8 @@ public abstract class AbstractRewritePomsPhase List<MavenProject> reactorProjects, boolean simulate, ReleaseResult result ) throws ReleaseExecutionException, ReleaseFailureException { + result.setStartTime( ( startTime >= 0 ) ? startTime : System.currentTimeMillis() ); + for ( MavenProject project : reactorProjects ) { logInfo( result, "Transforming '" + project.getName() + "'..." ); @@ -325,6 +338,40 @@ public abstract class AbstractRewritePomsPhase } transformScm( project, modelTarget, releaseDescriptor, projectId, scmRepository, result ); + + if ( properties != null ) + { + rewriteBuildOutputTimestampProperty( properties, result ); + } + } + + private void rewriteBuildOutputTimestampProperty( Properties properties, ReleaseResult result ) + { + String buildOutputTimestamp = properties.getProperty( "project.build.outputTimestamp" ); + if ( buildOutputTimestamp == null ) + { + // no Reproducible Builds output timestamp defined + return; + } + if ( buildOutputTimestamp.length() <= 1 ) + { + // value length == 1 means disable Reproducible Builds + return; + } + + if ( StringUtils.isNumeric( buildOutputTimestamp ) ) + { + // int representing seconds since the epoch, like SOURCE_DATE_EPOCH + buildOutputTimestamp = String.valueOf( result.getStartTime() / 1000 ); + } + else + { + // ISO-8601 + DateFormat df = new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ss'Z'" ); + df.setTimeZone( TimeZone.getTimeZone( "UTC" ) ); + buildOutputTimestamp = df.format( new Date( result.getStartTime() ) ); + } + properties.setProperty( "project.build.outputTimestamp", buildOutputTimestamp ); } private void rewriteVersion( Model modelTarget, ReleaseDescriptor releaseDescriptor, String projectId, diff --git a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/AbstractRewritingReleasePhaseTestCase.java b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/AbstractRewritingReleasePhaseTestCase.java index 0f72873..0cba62b 100644 --- a/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/AbstractRewritingReleasePhaseTestCase.java +++ b/maven-release-manager/src/test/java/org/apache/maven/shared/release/phase/AbstractRewritingReleasePhaseTestCase.java @@ -87,6 +87,7 @@ public abstract class AbstractRewritingReleasePhaseTestCase if( phase instanceof AbstractRewritePomsPhase) { ((AbstractRewritePomsPhase) phase).setModelETL( modelETL ); + ((AbstractRewritePomsPhase) phase).setStartTime( 0 ); } } diff --git a/maven-release-manager/src/test/resources/projects/rewrite-for-development/basic-pom/expected-pom-with-schema.xml b/maven-release-manager/src/test/resources/projects/rewrite-for-development/basic-pom/expected-pom-with-schema.xml index f565d93..495a718 100644 --- a/maven-release-manager/src/test/resources/projects/rewrite-for-development/basic-pom/expected-pom-with-schema.xml +++ b/maven-release-manager/src/test/resources/projects/rewrite-for-development/basic-pom/expected-pom-with-schema.xml @@ -32,6 +32,15 @@ <url>file://localhost/tmp/scm-repo/trunk</url> </scm> + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> + <project.build.outputTimestamp>1970-01-01T00:00:00Z</project.build.outputTimestamp> + <javaVersion>7</javaVersion> + <maven.compiler.source>1.${javaVersion}</maven.compiler.source> + <maven.compiler.target>1.${javaVersion}</maven.compiler.target> + </properties> + <!-- a multi-line comment diff --git a/maven-release-manager/src/test/resources/projects/rewrite-for-development/basic-pom/expected-pom.xml b/maven-release-manager/src/test/resources/projects/rewrite-for-development/basic-pom/expected-pom.xml index 557e405..80b0386 100644 --- a/maven-release-manager/src/test/resources/projects/rewrite-for-development/basic-pom/expected-pom.xml +++ b/maven-release-manager/src/test/resources/projects/rewrite-for-development/basic-pom/expected-pom.xml @@ -32,6 +32,15 @@ <url>file://localhost/tmp/scm-repo/trunk</url> </scm> + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> + <project.build.outputTimestamp>1970-01-01T00:00:00Z</project.build.outputTimestamp> + <javaVersion>7</javaVersion> + <maven.compiler.source>1.${javaVersion}</maven.compiler.source> + <maven.compiler.target>1.${javaVersion}</maven.compiler.target> + </properties> + <!-- a multi-line comment diff --git a/maven-release-manager/src/test/resources/projects/rewrite-for-development/basic-pom/pom.xml b/maven-release-manager/src/test/resources/projects/rewrite-for-development/basic-pom/pom.xml index 8a89516..a267436 100644 --- a/maven-release-manager/src/test/resources/projects/rewrite-for-development/basic-pom/pom.xml +++ b/maven-release-manager/src/test/resources/projects/rewrite-for-development/basic-pom/pom.xml @@ -32,6 +32,15 @@ <url>file://localhost/tmp/scm-repo/tags/release-label</url> </scm> + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> + <project.build.outputTimestamp>1970-01-01T00:00:00Z</project.build.outputTimestamp> + <javaVersion>7</javaVersion> + <maven.compiler.source>1.${javaVersion}</maven.compiler.source> + <maven.compiler.target>1.${javaVersion}</maven.compiler.target> + </properties> + <!-- a multi-line comment diff --git a/maven-release-manager/src/test/resources/projects/rewrite-for-release/basic-pom/expected-pom-with-schema.xml b/maven-release-manager/src/test/resources/projects/rewrite-for-release/basic-pom/expected-pom-with-schema.xml index b89e5f4..774b129 100644 --- a/maven-release-manager/src/test/resources/projects/rewrite-for-release/basic-pom/expected-pom-with-schema.xml +++ b/maven-release-manager/src/test/resources/projects/rewrite-for-release/basic-pom/expected-pom-with-schema.xml @@ -32,6 +32,15 @@ <url>file://localhost/tmp/scm-repo/tags/release-label</url> </scm> + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> + <project.build.outputTimestamp>1970-01-01T00:00:00Z</project.build.outputTimestamp> + <javaVersion>7</javaVersion> + <maven.compiler.source>1.${javaVersion}</maven.compiler.source> + <maven.compiler.target>1.${javaVersion}</maven.compiler.target> + </properties> + <!-- a multi-line comment diff --git a/maven-release-manager/src/test/resources/projects/rewrite-for-release/basic-pom/expected-pom.xml b/maven-release-manager/src/test/resources/projects/rewrite-for-release/basic-pom/expected-pom.xml index 8a89516..a267436 100644 --- a/maven-release-manager/src/test/resources/projects/rewrite-for-release/basic-pom/expected-pom.xml +++ b/maven-release-manager/src/test/resources/projects/rewrite-for-release/basic-pom/expected-pom.xml @@ -32,6 +32,15 @@ <url>file://localhost/tmp/scm-repo/tags/release-label</url> </scm> + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> + <project.build.outputTimestamp>1970-01-01T00:00:00Z</project.build.outputTimestamp> + <javaVersion>7</javaVersion> + <maven.compiler.source>1.${javaVersion}</maven.compiler.source> + <maven.compiler.target>1.${javaVersion}</maven.compiler.target> + </properties> + <!-- a multi-line comment diff --git a/maven-release-manager/src/test/resources/projects/rewrite-for-release/basic-pom/pom.xml b/maven-release-manager/src/test/resources/projects/rewrite-for-release/basic-pom/pom.xml index db3aeab..90bbf9e 100644 --- a/maven-release-manager/src/test/resources/projects/rewrite-for-release/basic-pom/pom.xml +++ b/maven-release-manager/src/test/resources/projects/rewrite-for-release/basic-pom/pom.xml @@ -32,6 +32,15 @@ <url>file://localhost/tmp/scm-repo/trunk</url> </scm> + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> + <project.build.outputTimestamp>initial</project.build.outputTimestamp> + <javaVersion>7</javaVersion> + <maven.compiler.source>1.${javaVersion}</maven.compiler.source> + <maven.compiler.target>1.${javaVersion}</maven.compiler.target> + </properties> + <!-- a multi-line comment diff --git a/pom.xml b/pom.xml index b11c1e6..37d7dfd 100644 --- a/pom.xml +++ b/pom.xml @@ -88,6 +88,7 @@ <javaVersion>7</javaVersion> <mavenVersion>3.0</mavenVersion> <maven.site.path>maven-release-archives/maven-release-LATEST</maven.site.path> + <project.build.outputTimestamp>2019-11-23T17:28:05Z</project.build.outputTimestamp> </properties> <build>