org.gradle.runtime.base

## Annotation Type ComponentModel

-     @Retention(value=RUNTIME)
      @Target(value=TYPE)
      @Incubating
      public @interface ComponentModel

  Declares that the associated class declares a ComponentModel The following example demonstrates how to register a custom component using a plugin with a ComponentModel annotation. Furthermore the plugin creates an instance of SampleLibrary named 'sampleLib'.

       import org.gradle.model.*
       import org.gradle.model.collection.*

       interface SampleLibrary extends LibrarySpec {}
       class DefaultSampleLibrary extends DefaultLibrarySpec implements SampleLibrary {}

       apply plugin: MySamplePlugin

       class MySamplePlugin implements Plugin {
           void apply(final Project project) {}

- - ### Required Element Summary

    Required Elements
    Modifier and Type | Required Element and Description
    --- | ---
    `Class<? extends LibrarySpec>` | `implementation` Denotes the implementation class of the LibrarySpec.
    `Class<? extends LibrarySpec>` | `type` Denotes the type of the LibrarySpec.

- - ### Element Detail

    - #### type

          public abstract Class<? extends LibrarySpec> type

      Denotes the type of the LibrarySpec.

    - #### implementation

          public abstract Class<? extends LibrarySpec> implementation

      Denotes the implementation class of the LibrarySpec.