Package: org.gradle.api.artifacts.dsl

## [Java] Interface ArtifactHandler

- This class is for defining artifacts to be published and adding them to configurations. Creating publish artifacts does not mean to create an archive. What is created is a domain object which represents a file to be published and information on how it should be published (e.g. the name).

  To create an publish artifact and assign it to a configuration you can use the following syntax:

  `<configurationName> <artifact-notation>, <artifact-notation> ...` or `<configurationName> <artifact-notation> { ... some code to configure the artifact }`

  The notation can be one of the following types:

  - AbstractArchiveTask. The information for publishing the artifact is extracted from the archive task (e.g. name, extension, ...). An archive artifact is represented using an instance of PublishArtifact.
  - File. The information for publishing the artifact is extracted from the file name. You can tweak the resulting values by using a closure to configure the properties of the artifact instance. A file artifact is represented using an instance of ConfigurablePublishArtifact
  - Map. The map should contain a 'file' key. This is converted to an artifact as described above. You can also specify other properties of the artifact using entries in the map.

  ## Examples

  An example showing how to associate an archive task with a configuration via the artifact handler. This way the archive can be published or referred in other projects via the configuration.

       configurations {
         //declaring new configuration that will be used to associate with artifacts
         schema
       }

       task schemaJar(type: Jar) {
         //some imaginary task that creates a jar artifact with some schema
       }

       //associating the task that produces the artifact with the configuration
       artifacts {
         //configuration name and the task:
         schema schemaJar
       }

- - ### Methods Summary

    Methods
    Type | Name and description
    --- | ---
    `PublishArtifact` | `add(String configurationName, Object artifactNotation)` Adds an artifact to the given configuration.
    `PublishArtifact` | `add(String configurationName, Object artifactNotation, Closure configureClosure)` Adds an artifact to the given configuration.

- - ### Method Detail

    - #### public PublishArtifact add(String configurationName, Object artifactNotation)

      Adds an artifact to the given configuration.

      Parameters:
        `configurationName` - The name of the configuration.
        `artifactNotation` - The artifact notation, in one of the notations described above.
      Returns:
        The artifact.

    - #### public PublishArtifact add(String configurationName, Object artifactNotation, Closure configureClosure)

      Adds an artifact to the given configuration.

      Parameters:
        `configurationName` - The name of the configuration.
        `artifactNotation` - The artifact notation, in one of the notations described above.
        `configureClosure` - The closure to execute to configure the artifact.
      Returns:
        The artifact.