Class CommonsDistributionDetachmentMojo

  • All Implemented Interfaces:
    org.apache.maven.plugin.ContextEnabled, org.apache.maven.plugin.Mojo

    @Mojo(name="detach-distributions",
          defaultPhase=VERIFY,
          threadSafe=true,
          aggregator=true)
    public class CommonsDistributionDetachmentMojo
    extends org.apache.maven.plugin.AbstractMojo
    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 in the dev distribution location for Apache projects.
    Since:
    1.0
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static Set<String> ARTIFACT_TYPES_TO_DETACH
      A list of "artifact types" in the Maven vernacular, to be detached from the deployment.
      private org.apache.commons.collections4.properties.SortedProperties artifactSha512s
      A SortedProperties of ArtifactString containing the sha512 signatures for the individual artifacts, where the Artifact is represented as: groupId:artifactId:version:type=sha512.
      private List<org.apache.maven.artifact.Artifact> detachedArtifacts
      This list is supposed to hold the Maven references to the aforementioned artifacts so that we can upload them to svn after they've been detached from the Maven deployment.
      private String distSvnStagingUrl
      The subversion staging url to which we upload all of our staged artifacts.
      private Boolean isDistModule
      A parameter to generally avoid running unless it is specifically turned on by the consuming module.
      private org.apache.maven.project.MavenProject project
      The maven project context injection so that we can get a hold of the variables at hand.
      private File workingDirectory
      The working directory in target that we use as a sandbox for the plugin.
      • Fields inherited from interface org.apache.maven.plugin.Mojo

        ROLE
    • Field Detail

      • ARTIFACT_TYPES_TO_DETACH

        private static final Set<String> ARTIFACT_TYPES_TO_DETACH
        A list of "artifact types" in the Maven vernacular, to be detached from the deployment. For the time being we want all artifacts generated by the maven-assembly-plugin to be detached from the deployment, namely *-src.zip, *-src.tar.gz, *-bin.zip, *-bin.tar.gz, and the corresponding .asc pgp signatures.
      • detachedArtifacts

        private final List<org.apache.maven.artifact.Artifact> detachedArtifacts
        This list is supposed to hold the Maven references to the aforementioned artifacts so that we can upload them to svn after they've been detached from the Maven deployment.
      • artifactSha512s

        private final org.apache.commons.collections4.properties.SortedProperties artifactSha512s
        A SortedProperties of ArtifactString containing the sha512 signatures for the individual artifacts, where the Artifact is represented as: groupId:artifactId:version:type=sha512.
      • project

        @Parameter(defaultValue="${project}",
                   required=true)
        private org.apache.maven.project.MavenProject project
        The maven project context injection so that we can get a hold of the variables at hand.
      • workingDirectory

        @Parameter(defaultValue="${project.build.directory}/commons-release-plugin",
                   property="commons.outputDirectory")
        private File workingDirectory
        The working directory in target that we use as a sandbox for the plugin.
      • distSvnStagingUrl

        @Parameter(defaultValue="",
                   property="commons.distSvnStagingUrl")
        private String distSvnStagingUrl
        The subversion staging url to which we upload all of our staged artifacts.
      • isDistModule

        @Parameter(defaultValue="false",
                   property="commons.release.isDistModule")
        private Boolean isDistModule
        A parameter to generally avoid running unless it is specifically turned on by the consuming module.
    • Method Detail

      • execute

        public void execute()
                     throws org.apache.maven.plugin.MojoExecutionException
        Throws:
        org.apache.maven.plugin.MojoExecutionException
      • putAttachedArtifactInSha512Map

        private void putAttachedArtifactInSha512Map​(org.apache.maven.artifact.Artifact artifact)
                                             throws org.apache.maven.plugin.MojoExecutionException
        Takes an attached artifact and puts the signature in the map.
        Parameters:
        artifact - is a Maven Artifact taken from the project at start time of mojo.
        Throws:
        org.apache.maven.plugin.MojoExecutionException - if an IOException occurs when getting the sha512 of the artifact.
      • writeAllArtifactsInSha512PropertiesFile

        private void writeAllArtifactsInSha512PropertiesFile()
                                                      throws org.apache.maven.plugin.MojoExecutionException
        Writes to ./target/commons-release-plugin/sha512.properties the artifact sha512's.
        Throws:
        org.apache.maven.plugin.MojoExecutionException - if we can't write the file due to an IOException.
      • copyRemovedArtifactsToWorkingDirectory

        private void copyRemovedArtifactsToWorkingDirectory()
                                                     throws org.apache.maven.plugin.MojoExecutionException
        A helper method to copy the newly detached artifacts to target/commons-release-plugin so that the CommonsDistributionStagingMojo can find the artifacts later.
        Throws:
        org.apache.maven.plugin.MojoExecutionException - if some form of an IOException occurs, we want it properly wrapped so that Maven can handle it.
      • hashArtifacts

        private void hashArtifacts()
                            throws org.apache.maven.plugin.MojoExecutionException
        A helper method that creates sha512 signature files for our detached artifacts in the target/commons-release-plugin directory for the purpose of being uploaded by the CommonsDistributionStagingMojo.
        Throws:
        org.apache.maven.plugin.MojoExecutionException - if some form of an IOException occurs, we want it properly wrapped so that Maven can handle it.
      • getSha512FilePath

        private String getSha512FilePath​(File directory,
                                         File file)
        A helper method to create a file path for the sha512 signature file from a given file.
        Parameters:
        directory - is the File for the directory in which to make the .sha512 file.
        file - the File whose name we should use to create the .sha512 file.
        Returns:
        a String that is the absolute path to the .sha512 file.
      • getArtifactKey

        private String getArtifactKey​(org.apache.maven.artifact.Artifact artifact)
        Generates the unique artifact key for storage in our sha512 map. For example, commons-test-1.4-src.tar.gz should have its name as the key.
        Parameters:
        artifact - the Artifact that we wish to generate a key for.
        Returns:
        the generated key