Package org.gradle.platform.base

# Annotation Interface ComponentType

@Retention(RUNTIME) @Target(METHOD) @Incubating public @interface ComponentType
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")
         }
     }