# Annotation Type ComponentBinaries

@Retention(RUNTIME) @Target(METHOD) @Incubating @Deprecated public @interface ComponentBinaries
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 the binaries that should be built for a custom `ComponentSpec` type. The following example demonstrates how to register a binary for a custom component type using a plugin with a `ComponentBinaries` annotation. Furthermore the plugin registers 'DefaultSampleBinary' as implementation for `BinarySpec`.

    interface SampleComponent extends VariantComponentSpec {}
    interface SampleBinary extends BinarySpec {}
    class DefaultSampleBinary extends BaseBinarySpec implements SampleBinary {}

    apply plugin: MyCustomBinariesPlugin

    class MyCustomBinariesPlugin extends RuleSource {
        @ComponentType
        void register(TypeBuilder<SampleBinary> builder) {
            builder.defaultImplementation(DefaultSampleBinary)
        }

        @ComponentBinaries
        void createBinariesForSampleLibrary(ModelMap<SampleBinary> binaries, SampleComponent component) {
            binaries.create("${component.name}Binary", SampleBinary)
        }
    }