This is an automated email from the ASF dual-hosted git repository.
hboutemy pushed a commit to branch maven-buildinfo-plugin
in repository https://gitbox.apache.org/repos/asf/maven-studies.git
The following commit(s) were added to refs/heads/maven-buildinfo-plugin by this
push:
new 31e026b add comparison save
31e026b is described below
commit 31e026b7a84327d349415c966296a688cae3170b
Author: Hervé Boutemy <[email protected]>
AuthorDate: Sat Mar 28 12:27:06 2020 +0100
add comparison save
useful for https://github.com/jvm-repo-rebuild/reproducible-central
---
.../maven/plugins/buildinfo/BuildinfoMojo.java | 38 ++++++++++++++++++++++
1 file changed, 38 insertions(+)
diff --git
a/src/main/java/org/apache/maven/plugins/buildinfo/BuildinfoMojo.java
b/src/main/java/org/apache/maven/plugins/buildinfo/BuildinfoMojo.java
index 8240435..c56f567 100644
--- a/src/main/java/org/apache/maven/plugins/buildinfo/BuildinfoMojo.java
+++ b/src/main/java/org/apache/maven/plugins/buildinfo/BuildinfoMojo.java
@@ -32,6 +32,7 @@ import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectHelper;
import org.apache.maven.shared.utils.logging.MessageUtils;
+import org.codehaus.plexus.util.StringUtils;
import org.eclipse.aether.RepositorySystem;
import org.eclipse.aether.RepositorySystemSession;
import org.eclipse.aether.repository.RemoteRepository;
@@ -42,9 +43,11 @@ import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Properties;
+import java.util.Set;
/**
* Creates a buildinfo file recording build environment and output, as
specified in
@@ -101,6 +104,15 @@ public class BuildinfoMojo
private String referenceRepo;
/**
+ * Specifies if reference comparison output file should be saved.
+ * This is expected to be a temporary feature to ease
+ * <a
href="https://github.com/jvm-repo-rebuild/reproducible-central">Central
Repository rebuild</a>
+ * results display.
+ */
+ @Parameter( property = "reference.compare.save", defaultValue = "false" )
+ private boolean referenceCompareSave;
+
+ /**
* Used for attaching the buildinfo file in the project.
*/
@Component
@@ -248,6 +260,8 @@ public class BuildinfoMojo
Properties reference = BuildInfoWriter.loadOutputProperties(
referenceBuildinfo );
int ok = 0;
+ Set<String> okFilenames = new HashSet<>();
+ Set<String> koFilenames = new HashSet<>();
File referenceDir = referenceBuildinfo.getParentFile();
for ( Map.Entry<Artifact, String> entry : artifacts.entrySet() )
{
@@ -257,6 +271,11 @@ public class BuildinfoMojo
if ( checkArtifact( artifact, prefix, reference, actual,
referenceDir ) )
{
ok++;
+ okFilenames.add( artifact.getFile().getName() );
+ }
+ else
+ {
+ koFilenames.add( artifact.getFile().getName() );
}
}
@@ -273,6 +292,25 @@ public class BuildinfoMojo
{
getLog().info( "Reproducible Build output summary: " + ok + "
files ok" );
}
+
+ if ( referenceCompareSave )
+ {
+ File compare = new File( buildinfoFile.getParentFile(),
buildinfoFile.getName() + ".compare" );
+ try ( PrintWriter p =
+ new PrintWriter( new BufferedWriter( new OutputStreamWriter(
new FileOutputStream( compare ),
+
Charsets.ISO_8859_1 ) ) ) )
+ {
+ p.println( "ok=" + ok );
+ p.println( "ko=" + ko );
+ p.println( "okFiles=\"" + StringUtils.join(
okFilenames.iterator(), " " ) + '"' );
+ p.println( "koFiles=\"" + StringUtils.join(
koFilenames.iterator(), " " ) + '"' );
+ getLog().info( "Reproducible Build comparison saved to " +
compare );
+ }
+ catch ( IOException e )
+ {
+ throw new MojoExecutionException( "Error creating file " +
compare, e );
+ }
+ }
}
private boolean checkArtifact( Artifact artifact, String prefix,
Properties reference, Properties actual,