Repository: commons-release-plugin Updated Branches: refs/heads/master 5152a0bca -> 9283b7477
COMMONSSITE-113: adding sha1.properties file in workingDirectory Project: http://git-wip-us.apache.org/repos/asf/commons-release-plugin/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-release-plugin/commit/9283b747 Tree: http://git-wip-us.apache.org/repos/asf/commons-release-plugin/tree/9283b747 Diff: http://git-wip-us.apache.org/repos/asf/commons-release-plugin/diff/9283b747 Branch: refs/heads/master Commit: 9283b74770fa03875b08f3f4a89f2ad397c98e1a Parents: 5152a0b Author: Rob Tompkins <[email protected]> Authored: Wed May 16 15:13:29 2018 -0400 Committer: Rob Tompkins <[email protected]> Committed: Wed May 16 15:13:59 2018 -0400 ---------------------------------------------------------------------- .../CommonsDistributionDetachmentMojo.java | 75 +++++++++++++++++--- .../CommonsDistributionDetachmentMojoTest.java | 2 + .../DistributionDetachmentProjectStub.java | 18 +++-- 3 files changed, 79 insertions(+), 16 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-release-plugin/blob/9283b747/src/main/java/org/apache/commons/release/plugin/mojos/CommonsDistributionDetachmentMojo.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/release/plugin/mojos/CommonsDistributionDetachmentMojo.java b/src/main/java/org/apache/commons/release/plugin/mojos/CommonsDistributionDetachmentMojo.java index 3587e64..ff8b785 100644 --- a/src/main/java/org/apache/commons/release/plugin/mojos/CommonsDistributionDetachmentMojo.java +++ b/src/main/java/org/apache/commons/release/plugin/mojos/CommonsDistributionDetachmentMojo.java @@ -16,6 +16,17 @@ */ package org.apache.commons.release.plugin.mojos; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.PrintWriter; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Properties; +import java.util.Set; import org.apache.commons.codec.digest.DigestUtils; import org.apache.commons.lang3.StringUtils; import org.apache.commons.release.plugin.SharedFunctions; @@ -27,16 +38,6 @@ import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProject; -import java.io.File; -import java.io.IOException; -import java.io.PrintWriter; -import java.nio.file.Files; -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - /** * The purpose of this maven mojo is to detach the artifacts generated by the maven-assembly-plugin, * which for the Apache Commons Project do not get uploaded to Nexus, and putting those artifacts @@ -75,6 +76,13 @@ public class CommonsDistributionDetachmentMojo extends AbstractMojo { private List<Artifact> detachedArtifacts = new ArrayList<>(); /** + * A {@link Properties} of {@link Artifact} -> {@link String} containing the sha1 signatures + * for the individual artifacts, where the {@link Artifact} is represented as: + * <code>groupId:artifactId:version:type=sha1</code>. + */ + private Properties artifactSha1s = new Properties(); + + /** * The maven project context injection so that we can get a hold of the variables at hand. */ @Parameter(defaultValue = "${project}", required = true) @@ -112,6 +120,7 @@ public class CommonsDistributionDetachmentMojo extends AbstractMojo { } getLog().info("Detaching Assemblies"); for (Object attachedArtifact : project.getAttachedArtifacts()) { + putAttachedArtifactInSha1Map((Artifact) attachedArtifact); if (ARTIFACT_TYPES_TO_DETACH.contains(((Artifact) attachedArtifact).getType())) { detachedArtifacts.add((Artifact) attachedArtifact); } @@ -126,12 +135,58 @@ public class CommonsDistributionDetachmentMojo extends AbstractMojo { if (!workingDirectory.exists()) { SharedFunctions.initDirectory(getLog(), workingDirectory); } + logAllArtifactsInPropertiesFile(); copyRemovedArtifactsToWorkingDirectory(); getLog().info(""); sha1AndMd5SignArtifacts(); } /** + * Takes an attached artifact and puts the signature in the map. + * @param artifact is a maven {@link Artifact} taken from the project at start time of mojo. + * @throws MojoExecutionException if an {@link IOException} occurs when getting the sha1 of the + * artifact. + */ + private void putAttachedArtifactInSha1Map(Artifact artifact) throws MojoExecutionException { + try { + StringBuffer artifactKey = new StringBuffer(); + artifactKey + .append(artifact.getGroupId()).append('-') + .append(artifact.getArtifactId()).append('-') + .append(artifact.getVersion()).append('-') + .append(artifact.getType()); + artifactSha1s.put( + artifactKey.toString(), + DigestUtils.sha1Hex(Files.readAllBytes(artifact.getFile().toPath())) + ); + } catch (IOException e) { + throw new MojoExecutionException( + "Could not find artifact signature for: " + + artifact.getArtifactId() + + "-" + + artifact.getVersion() + + " type: " + + artifact.getType() + ,e); + } + } + + /** + * Writes to ./target/commons-release-plugin/sha1.properties the artifact sha1's. + * + * @throws MojoExecutionException if we cant write the file due to an {@link IOException}. + */ + private void logAllArtifactsInPropertiesFile() throws MojoExecutionException { + try { + File sha1PropertiesFile = new File(workingDirectory, "sha1.properties"); + FileOutputStream fileWriter = new FileOutputStream(sha1PropertiesFile); + artifactSha1s.store(fileWriter, "release sha1s"); + } catch (IOException e) { + throw new MojoExecutionException("Failure to write sha1's", e); + } + } + + /** * A helper method to copy the newly detached artifacts to <code>target/commons-release-plugin</code> * so that the {@link CommonsDistributionStagingMojo} can find the artifacts later. * http://git-wip-us.apache.org/repos/asf/commons-release-plugin/blob/9283b747/src/test/java/org/apache/commons/release/plugin/mojos/CommonsDistributionDetachmentMojoTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/release/plugin/mojos/CommonsDistributionDetachmentMojoTest.java b/src/test/java/org/apache/commons/release/plugin/mojos/CommonsDistributionDetachmentMojoTest.java index 554432f..ecb458b 100644 --- a/src/test/java/org/apache/commons/release/plugin/mojos/CommonsDistributionDetachmentMojoTest.java +++ b/src/test/java/org/apache/commons/release/plugin/mojos/CommonsDistributionDetachmentMojoTest.java @@ -74,6 +74,7 @@ public class CommonsDistributionDetachmentMojoTest { File detachedZipMd5 = new File(COMMONS_RELEASE_PLUGIN_TEST_DIR_PATH + "/mockAttachedZip.zip.md5"); File detachedZipSha1 = new File(COMMONS_RELEASE_PLUGIN_TEST_DIR_PATH + "/mockAttachedZip.zip.sha1"); File notDetachedMockAttachedFile = new File(COMMONS_RELEASE_PLUGIN_TEST_DIR_PATH + "/mockAttachedFile.html"); + File sha1Properties = new File(COMMONS_RELEASE_PLUGIN_TEST_DIR_PATH + "/sha1.properties"); assertTrue(detachedTarGz.exists()); assertTrue(detachedTarGzAsc.exists()); assertTrue(detachedTarMd5.exists()); @@ -82,6 +83,7 @@ public class CommonsDistributionDetachmentMojoTest { assertTrue(detachedZipAsc.exists()); assertTrue(detachedZipMd5.exists()); assertTrue(detachedZipSha1.exists()); + assertTrue(sha1Properties.exists()); assertFalse(notDetachedMockAttachedFile.exists()); } http://git-wip-us.apache.org/repos/asf/commons-release-plugin/blob/9283b747/src/test/java/org/apache/commons/release/plugin/stubs/DistributionDetachmentProjectStub.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/release/plugin/stubs/DistributionDetachmentProjectStub.java b/src/test/java/org/apache/commons/release/plugin/stubs/DistributionDetachmentProjectStub.java index 342f77b..5eb68ae 100644 --- a/src/test/java/org/apache/commons/release/plugin/stubs/DistributionDetachmentProjectStub.java +++ b/src/test/java/org/apache/commons/release/plugin/stubs/DistributionDetachmentProjectStub.java @@ -44,31 +44,36 @@ public class DistributionDetachmentProjectStub extends MavenProjectStub { attachedArtifacts.add( new DistributionDetachmentArtifactStub( new File("src/test/resources/mojos/detach-distributions/target/mockAttachedFile.html"), - "html" + "html", + "mockAttachedFile" ) ); attachedArtifacts.add( new DistributionDetachmentArtifactStub( new File("src/test/resources/mojos/detach-distributions/target/mockAttachedTar.tar.gz"), - "tar.gz" + "tar.gz", + "mockAttachedTar" ) ); attachedArtifacts.add( new DistributionDetachmentArtifactStub( new File("src/test/resources/mojos/detach-distributions/target/mockAttachedTar.tar.gz.asc"), - "tar.gz.asc" + "tar.gz.asc", + "mockAttachedTar" ) ); attachedArtifacts.add( new DistributionDetachmentArtifactStub( new File("src/test/resources/mojos/detach-distributions/target/mockAttachedZip.zip"), - "zip" + "zip", + "mockAttachedZip" ) ); attachedArtifacts.add( new DistributionDetachmentArtifactStub( new File("src/test/resources/mojos/detach-distributions/target/mockAttachedZip.zip.asc"), - "zip.asc" + "zip.asc", + "mockAttachedZip" ) ); return attachedArtifacts; @@ -80,7 +85,8 @@ public class DistributionDetachmentProjectStub extends MavenProjectStub { private String type; - public DistributionDetachmentArtifactStub(File file, String type) { + public DistributionDetachmentArtifactStub(File file, String type, String artifactId) { + this.setArtifactId(artifactId); this.artifact = file; this.type = type; }
