Interface ComponentMetadataHandler


  • public interface ComponentMetadataHandler
    Allows the build to provide rules that modify the metadata of depended-on software components. Component metadata rules are applied in the components section of the dependencies block DependencyHandler of a build script. The rules can be defined in two different ways:
    1. As an action directly when they are applied in the components section
    2. As an isolated class implementing the ComponentMetadataRule interface

    Example shows a basic way of removing certain transitive dependencies from one of our dependencies.

     plugins {
         id 'java'
     }
    
     repositories {
         mavenCentral()
     }
    
     dependencies {
         components {
             withModule("jaxen:jaxen") {
                 allVariants {
                     withDependencies {
                         removeAll { it.group in ["dom4j", "jdom", "xerces", "maven-plugins", "xml-apis", "xom"] }
                     }
                 }
    
             }
         }
         implementation("jaxen:jaxen:1.1.3")
     }
     
    Since:
    1.8
    • Method Detail

      • all

        ComponentMetadataHandler all​(@DelegatesTo(ComponentMetadataDetails.class)
                                     Closure<?> rule)
        Adds a rule closure that may modify the metadata of any resolved software component.

        The supplied rule closure must declare a ComponentMetadataDetails as it's first parameter, allowing the component metadata to be modified.

        In addition, the rule can declare additional (read-only) parameters, which may provide extra details about the component. The order of these additional parameters is not significant.

        The following additional parameter types are supported:

        • IvyModuleDescriptor - additional Ivy-specific metadata. Rules declaring this parameter will only be invoked for components packaged as an Ivy module.
        • PomModuleDescriptor - additional Maven-specific metadata. Rules declaring this parameter will only be invoked for components packaged as a POM module.
        Parameters:
        rule - the rule to be added
        Returns:
        this
      • all

        ComponentMetadataHandler all​(java.lang.Object ruleSource)
        Adds a rule that may modify the metadata of any resolved software component.

        The ruleSource is an Object that has a single rule method annotated with Mutate.

        This rule method:

        Parameters:
        ruleSource - the rule source object to be added
        Returns:
        this
      • all

        ComponentMetadataHandler all​(java.lang.Class<? extends ComponentMetadataRule> rule)
        Adds a class based rule that may modify the metadata of any resolved software component.
        Parameters:
        rule - the rule to be added
        Returns:
        this
        Since:
        4.9
      • all

        ComponentMetadataHandler all​(java.lang.Class<? extends ComponentMetadataRule> rule,
                                     Action<? super ActionConfiguration> configureAction)
        Adds a class based rule that may modify the metadata of any resolved software component. The rule itself is configured by the provided configure action.
        Parameters:
        rule - the rule to be added
        configureAction - the rule configuration
        Returns:
        this
        Since:
        4.9
      • withModule

        ComponentMetadataHandler withModule​(java.lang.Object id,
                                            Action<? super ComponentMetadataDetails> rule)
        Adds a rule that may modify the metadata of any resolved software component belonging to the specified module.
        Parameters:
        id - the module to apply this rule to in "group:module" format or as a ModuleIdentifier
        rule - the rule to be added
        Returns:
        this
      • withModule

        ComponentMetadataHandler withModule​(java.lang.Object id,
                                            java.lang.Object ruleSource)
        Adds a rule that may modify the metadata of any resolved software component belonging to the specified module.

        The rule source parameter is subject to the same requirements as all(Object).

        Parameters:
        id - the module to apply this rule to in "group:module" format or as a ModuleIdentifier
        ruleSource - the rule source object to be added
        Returns:
        this
      • withModule

        ComponentMetadataHandler withModule​(java.lang.Object id,
                                            java.lang.Class<? extends ComponentMetadataRule> rule)
        Adds a class based rule that may modify the metadata of any resolved software component belonging to the specified module.
        Parameters:
        id - the module to apply this rule to in "group:module" format or as a ModuleIdentifier
        rule - the rule to be added
        Returns:
        this
        Since:
        4.9
      • withModule

        ComponentMetadataHandler withModule​(java.lang.Object id,
                                            java.lang.Class<? extends ComponentMetadataRule> rule,
                                            Action<? super ActionConfiguration> configureAction)
        Adds a class based rule that may modify the metadata of any resolved software component belonging to the specified module.
        Parameters:
        id - the module to apply this rule to in "group:module" format or as a ModuleIdentifier
        rule - the rule to be added
        Returns:
        this
        Since:
        4.9