# Package-level declarations

Types for declaring and using Software Components.

#### Since

1.4

## Types

AdhocComponentWithVariants
Link copied to clipboard
interface AdhocComponentWithVariants : SoftwareComponent
A component which can declare additional variants corresponding to features.
Artifact
Link copied to clipboard
interface Artifact
An artifact of a software component that may be requested in the result of an artifact query.
BuildableComponent
Link copied to clipboard
interface BuildableComponent : SoftwareComponent
Represents a component that can be built.
Component
Link copied to clipboard
interface Component
A software component that can be queried via the Artifact Query API.
ComponentWithCoordinates
Link copied to clipboard
interface ComponentWithCoordinates : SoftwareComponent
Represents a component that determines its publication coordinates.
ComponentWithVariants
Link copied to clipboard
interface ComponentWithVariants : SoftwareComponent
Represents a SoftwareComponent that provides one or more mutually exclusive children, or variants.
ConfigurationVariantDetails
Link copied to clipboard
interface ConfigurationVariantDetails
The details object used to determine what to do with a configuration variant when publishing.
PublishableComponent
Link copied to clipboard
interface PublishableComponent : SoftwareComponent, ComponentWithCoordinates
Represents a component that can be published.
SoftwareComponent
Link copied to clipboard
interface SoftwareComponent : Named
A software component produced by a Gradle software project.
SoftwareComponentContainer
Link copied to clipboard
@ServiceScope(value = Project::class)
interface SoftwareComponentContainer : ExtensiblePolymorphicDomainObjectContainer<T>
A Container that contains all of the Software Components produced by a Project.
SoftwareComponentFactory
Link copied to clipboard
@ServiceScope(value = Global::class)
interface SoftwareComponentFactory
A software component factory is responsible for providing to plugins a way to create software components.
SoftwareComponentVariant
Link copied to clipboard
interface SoftwareComponentVariant : HasAttributes, Named
A software component variant, which has a number of artifacts, dependencies, constraints and capabilities, and that can be published to various formats (Gradle metadata, POM, ivy.xml, ...