Package org.apache.commons.release.plugin.mojos

# Class CommonsDistributionDetachmentMojo

java.lang.Object
org.apache.maven.plugin.AbstractMojo
org.apache.commons.release.plugin.mojos.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 final Set<String>`
  `ARTIFACT_TYPES_TO_DETACH`
  A list of "artifact types" in the Maven vernacular, to be detached from the deployment.
  `private final org.apache.commons.collections4.properties.SortedProperties`
  `artifactSha512s`
  A `SortedProperties` of `Artifact` → `String` containing the sha512 signatures for the individual artifacts, where the `Artifact` is represented as: `groupId:artifactId:version:type=sha512`.
  `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.
  `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`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `CommonsDistributionDetachmentMojo()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `private void`
  `copyRemovedArtifactsToWorkingDirectory()`
  A helper method to copy the newly detached artifacts to `target/commons-release-plugin` so that the `CommonsDistributionStagingMojo` can find the artifacts later.
  `void`
  `execute()`
  `private String`
  `getArtifactKey(org.apache.maven.artifact.Artifact artifact)`
  Generates the unique artifact key for storage in our sha512 map.
  `private String`
  `getSha512FilePath(File directory, File file)`
  A helper method to create a file path for the `sha512` signature file from a given file.
  `private void`
  `hashArtifacts()`
  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`.
  `private void`
  `putAttachedArtifactInSha512Map(org.apache.maven.artifact.Artifact artifact)`
  Takes an attached artifact and puts the signature in the map.
  `private void`
  `writeAllArtifactsInSha512PropertiesFile()`
  Writes to ./target/commons-release-plugin/sha512.properties the artifact sha512's.

  ### Methods inherited from class org.apache.maven.plugin.AbstractMojo

  `getLog, getPluginContext, setLog, setPluginContext`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Field Details

  - ### 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 `Artifact` → `String` 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.

- ## Constructor Details

  - ### CommonsDistributionDetachmentMojo

    public CommonsDistributionDetachmentMojo()

- ## Method Details

  - ### 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