Annotation Type ComponentType


@Retention(RUNTIME) @Target(METHOD) @Incubating @Deprecated public @interface ComponentType
Deprecated.
The Gradle software model is deprecated and will be removed in Gradle 10. Use the new component model (e.g. cpp-application, cpp-library, swift-application, swift-library, xctest) instead.
Declares a custom ComponentSpec type. The following example demonstrates how to register a custom component type using a plugin with a ComponentType annotation. Furthermore the plugin creates an instance of SampleComponent named 'sampleComponent'.
interface SampleComponent extends ComponentSpec {}
class DefaultSampleComponent extends BaseComponentSpec implements SampleComponent {}

apply plugin: MySamplePlugin

class MySamplePlugin extends RuleSource {
    @ComponentType
    void register(TypeBuilder<SampleComponent> builder) {
        builder.defaultImplementation(DefaultSampleComponent)
    }

    @Mutate
    void createSampleLibraryComponents(ModelMap<SampleComponent> componentSpecs) {
        componentSpecs.create("sampleComponent")
    }
}