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:

In each case, a ConfigurablePublishArtifact instance is created for the artifact, to allow artifact properties to be configured. You can also override the default values for artifact properties by using a closure to configure the properties of the artifact instance


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

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


Link copied to clipboard
abstract fun add(configurationName: String, artifactNotation: Any): PublishArtifact
abstract fun add(configurationName: String, artifactNotation: Any, @DelegatesTo(value = ConfigurablePublishArtifact::class) configureClosure: Closure): PublishArtifact
abstract fun add(configurationName: String, artifactNotation: Any, configureAction: Action<in ConfigurablePublishArtifact>): PublishArtifact
Adds an artifact to the given configuration.
Link copied to clipboard
operator fun ArtifactHandler.invoke(configuration: ArtifactHandlerScope.() -> Unit)

Configures the published artifacts for this project.