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 2020/10/11 18:28:12 UTC
[maven] 01/01: [MNG-6754] Set the same timestamp in multi module
builds
This is an automated email from the ASF dual-hosted git repository.
michaelo pushed a commit to branch MNG-6754
in repository https://gitbox.apache.org/repos/asf/maven.git
commit a55757b55c6f3c90ce6d4d8636f2811206aab45a
Author: Michael Osipov <mi...@apache.org>
AuthorDate: Sun Oct 11 20:27:49 2020 +0200
[MNG-6754] Set the same timestamp in multi module builds
Reuse MavenExecutionRequest#getStartTime() for expanded snapshot
versions when deploying to a remote repository throughout the entire
reactor for all modules.
This closes #381
---
.../aether/DefaultRepositorySystemSessionFactory.java | 11 ++++++-----
.../maven/repository/internal/RemoteSnapshotMetadata.java | 12 ++++++++----
.../repository/internal/RemoteSnapshotMetadataGenerator.java | 9 +++++++--
.../repository/internal/RemoteSnapshotMetadataTest.java | 2 +-
4 files changed, 22 insertions(+), 12 deletions(-)
diff --git a/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java b/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
index 28f75cd..86cb551 100644
--- a/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
@@ -113,6 +113,7 @@ public class DefaultRepositorySystemSessionFactory
Map<Object, Object> configProps = new LinkedHashMap<>();
configProps.put( ConfigurationProperties.USER_AGENT, getUserAgent() );
configProps.put( ConfigurationProperties.INTERACTIVE, request.isInteractiveMode() );
+ configProps.put( "maven.startTime", request.getStartTime() );
configProps.putAll( request.getSystemProperties() );
configProps.putAll( request.getUserProperties() );
@@ -281,14 +282,14 @@ public class DefaultRepositorySystemSessionFactory
return props.getProperty( "version", "unknown-version" );
}
-
+
private Collection<FileTransformer> getTransformersForArtifact( final Artifact artifact,
final SessionData sessionData )
{
TransformerContext context = (TransformerContext) sessionData.get( TransformerContext.KEY );
Collection<FileTransformer> transformers = new ArrayList<>();
-
- // In case of install:install-file there's no transformer context, as the goal is unrelated to the lifecycle.
+
+ // In case of install:install-file there's no transformer context, as the goal is unrelated to the lifecycle.
if ( "pom".equals( artifact.getExtension() ) && context != null )
{
transformers.add( new FileTransformer()
@@ -306,7 +307,7 @@ public class DefaultRepositorySystemSessionFactory
throw new TransformException( e );
}
}
-
+
@Override
public Artifact transformArtifact( Artifact artifact )
{
@@ -317,4 +318,4 @@ public class DefaultRepositorySystemSessionFactory
return Collections.unmodifiableCollection( transformers );
}
-}
\ No newline at end of file
+}
diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java
index efcfb4d..fe46228 100644
--- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java
+++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadata.java
@@ -47,19 +47,23 @@ final class RemoteSnapshotMetadata
private final Map<String, SnapshotVersion> versions = new LinkedHashMap<>();
- RemoteSnapshotMetadata( Artifact artifact, boolean legacyFormat )
+ private final Date timestamp;
+
+ RemoteSnapshotMetadata( Artifact artifact, boolean legacyFormat, Date timestamp )
{
super( createRepositoryMetadata( artifact, legacyFormat ), null, legacyFormat );
+ this.timestamp = timestamp;
}
- private RemoteSnapshotMetadata( Metadata metadata, File file, boolean legacyFormat )
+ private RemoteSnapshotMetadata( Metadata metadata, File file, boolean legacyFormat, Date timestamp )
{
super( metadata, file, legacyFormat );
+ this.timestamp = timestamp;
}
public MavenMetadata setFile( File file )
{
- return new RemoteSnapshotMetadata( metadata, file, legacyFormat );
+ return new RemoteSnapshotMetadata( metadata, file, legacyFormat, timestamp );
}
public String getExpandedVersion( Artifact artifact )
@@ -82,7 +86,7 @@ final class RemoteSnapshotMetadata
snapshot = new Snapshot();
snapshot.setBuildNumber( getBuildNumber( recessive ) + 1 );
- snapshot.setTimestamp( utcDateFormatter.format( new Date() ) );
+ snapshot.setTimestamp( utcDateFormatter.format( timestamp ) );
Versioning versioning = new Versioning();
versioning.setSnapshot( snapshot );
diff --git a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java
index 3218863..2e42bee 100644
--- a/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java
+++ b/maven-resolver-provider/src/main/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataGenerator.java
@@ -21,6 +21,7 @@ package org.apache.maven.repository.internal;
import java.util.Collection;
import java.util.Collections;
+import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Map;
@@ -42,9 +43,13 @@ class RemoteSnapshotMetadataGenerator
private final boolean legacyFormat;
+ private final Date timestamp;
+
RemoteSnapshotMetadataGenerator( RepositorySystemSession session, DeployRequest request )
{
- legacyFormat = ConfigUtils.getBoolean( session.getConfigProperties(), false, "maven.metadata.legacy" );
+ legacyFormat = ConfigUtils.getBoolean( session, false, "maven.metadata.legacy" );
+
+ timestamp = (Date) ConfigUtils.getObject( session, new Date(), "maven.startTime" );
snapshots = new LinkedHashMap<>();
@@ -74,7 +79,7 @@ class RemoteSnapshotMetadataGenerator
RemoteSnapshotMetadata snapshotMetadata = snapshots.get( key );
if ( snapshotMetadata == null )
{
- snapshotMetadata = new RemoteSnapshotMetadata( artifact, legacyFormat );
+ snapshotMetadata = new RemoteSnapshotMetadata( artifact, legacyFormat, timestamp );
snapshots.put( key, snapshotMetadata );
}
snapshotMetadata.bind( artifact );
diff --git a/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataTest.java b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataTest.java
index 3540bf2..566710d 100644
--- a/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataTest.java
+++ b/maven-resolver-provider/src/test/java/org/apache/maven/repository/internal/RemoteSnapshotMetadataTest.java
@@ -66,7 +66,7 @@ public class RemoteSnapshotMetadataTest
String dateBefore = gregorianDate();
RemoteSnapshotMetadata metadata = new RemoteSnapshotMetadata(
- new DefaultArtifact( "a:b:1-SNAPSHOT" ), false);
+ new DefaultArtifact( "a:b:1-SNAPSHOT" ), false, new Date() );
metadata.merge( new Metadata() );
String dateAfter = gregorianDate();