Class DependencyInsightReportTask

  • All Implemented Interfaces:
    java.lang.Comparable<Task>, org.gradle.api.internal.DynamicObjectAware, org.gradle.api.internal.TaskInternal, Named, ExtensionAware, Task, Configurable<Task>

    @DisableCachingByDefault(because="Produces only non-cacheable console output")
    public abstract class DependencyInsightReportTask
    extends DefaultTask
    Generates a report that attempts to answer questions like:
    • Why is this dependency in the dependency graph?
    • Exactly which dependencies are pulling this dependency into the graph?
    • What is the actual version (i.e. *selected* version) of the dependency that will be used? Is it the same as what was *requested*?
    • Why is the *selected* version of a dependency different to the *requested*?
    • What variants are available for this dependency?
    Use this task to get insight into a particular dependency (or dependencies) and find out what exactly happens during dependency resolution and conflict resolution. If the dependency version was forced or selected by the conflict resolution this information will be available in the report.

    While the regular dependencies report (DependencyReportTask) shows the path from the top level dependencies down through the transitive dependencies, the dependency insight report shows the path from a particular dependency to the dependencies that pulled it in. That is, it is an inverted view of the regular dependencies report.

    The task requires setting the dependency spec and the configuration. For more information on how to configure those please refer to docs for setDependencySpec(Object) and setConfiguration(String).

    The task can also be configured from the command line. For more information please refer to setDependencySpec(Object), setConfiguration(String), setShowSinglePathToDependency(boolean), and getShowingAllVariants().

    • Constructor Detail

      • DependencyInsightReportTask

        public DependencyInsightReportTask()
    • Method Detail

      • getDependencySpec

        @Internal
        @Nullable
        public Spec<DependencyResult> getDependencySpec()
        Selects the dependency (or dependencies if multiple matches found) to show the report for.
      • setDependencySpec

        public void setDependencySpec​(@Nullable
                                      Spec<DependencyResult> dependencySpec)
        The dependency spec selects the dependency (or dependencies if multiple matches found) to show the report for. The spec receives an instance of DependencyResult as parameter.
      • setDependencySpec

        public void setDependencySpec​(@Nullable
                                      java.lang.Object dependencyInsightNotation)
        Configures the dependency to show the report for. Multiple notation formats are supported: Strings, instances of Spec and groovy closures. Spec and closure receive DependencyResult as parameter. Examples of String notation: 'org.slf4j:slf4j-api', 'slf4j-api', or simply: 'slf4j'. The input may potentially match multiple dependencies. See also setDependencySpec(Spec)

        This method is exposed to the command line interface. Example usage:

        gradle dependencyInsight --dependency slf4j
      • getConfiguration

        @Internal
        @Nullable
        public Configuration getConfiguration()
        Configuration to look the dependency in
      • setConfiguration

        public void setConfiguration​(@Nullable
                                     Configuration configuration)
        Sets the configuration to look the dependency in.
      • setConfiguration

        public void setConfiguration​(@Nullable
                                     java.lang.String configurationName)
        Sets the configuration (via name) to look the dependency in.

        This method is exposed to the command line interface. Example usage:

        gradle dependencyInsight --configuration runtime --dependency slf4j
      • isShowSinglePathToDependency

        @Internal
        public boolean isShowSinglePathToDependency()
        Tells if the report should only show one path to each dependency.
        Since:
        4.9
      • setShowSinglePathToDependency

        public void setShowSinglePathToDependency​(boolean showSinglePathToDependency)
        Tells if the report should only display a single path to each dependency, which can be useful when the graph is large. This is false by default, meaning that for each dependency, the report will display all paths leading to it.

        This method is exposed to the command line interface. Example usage:

        gradle dependencyInsight --single-path
        Since:
        4.9
      • getShowingAllVariants

        @Incubating
        @Internal
        public Property<java.lang.Boolean> getShowingAllVariants()
        Show all variants of each displayed dependency.

        Due to internal limitations, this option only works when the configuration is unresolved before the execution of this task.

        This method is exposed to the command line interface. Example usage:

        gradle dependencyInsight --all-variants
        Since:
        7.5
      • getTextOutputFactory

        @Inject
        protected org.gradle.internal.logging.text.StyledTextOutputFactory getTextOutputFactory()
      • getVersionSelectorScheme

        @Inject
        protected org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.VersionSelectorScheme getVersionSelectorScheme()
      • getVersionComparator

        @Inject
        protected org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.VersionComparator getVersionComparator()
      • getVersionParser

        @Inject
        protected org.gradle.api.internal.artifacts.ivyservice.ivyresolve.strategy.VersionParser getVersionParser()
      • getAttributesFactory

        @Inject
        protected org.gradle.api.internal.attributes.ImmutableAttributesFactory getAttributesFactory()
        An injected ImmutableAttributesFactory.
        Since:
        4.9
      • report

        public void report()