1

I want to get the dependencies programmatically within Gradle in an Android project.

I tried (in both project as well as module level gradle.build):

task dumpDependencies {
    doLast {
        def resolved = configurations.compileClasspath.resolvedConfiguration
        println "Files: $resolved.files"
    }
}

But I get this error:

> Could not get unknown property 'compileClasspath' for configuration container of type org.gradle.api.internal.artifacts.configurations.DefaultConfigurationContainer.

I am using Gradle version 7.5

distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-bin.zip

What am I missing?

rysv
  • 2,416
  • 7
  • 30
  • 48

1 Answers1

1

The compileClasspath configuration is provided by the java plugin, see more at https://docs.gradle.org/current/userguide/java_plugin.html#sec:java_plugin_and_dependency_management.

So to access the compileClasspath configuration, plugin Java declaration is required

plugins {
   id 'java'
}

For Android projects, which by default use kotlin plugin instead, there are no compileClasspath configurations. I could think of this alternative solution:

configurations.implementation.setCanBeResolved(true)
def implementationResolved = configurations.implementation.resolvedConfiguration
println "Implementation files: $implementationResolved.files"

configurations.compileOnly.setCanBeResolved(true)
def compileResolved = configurations.compileOnly.resolvedConfiguration
println "Compile only files: $compileResolved.files"

def files = implementationResolved.files + compileResolved.files
println "Files: $files"
minh tri Vo
  • 524
  • 4
  • 11
  • Android Studio has java built-in I suppose, I cannot add this plugin. – rysv May 25 '23 at 14:58
  • minh, you are right. After I changed to the valid configuration `debugRuntimeClasspath` it worked! – rysv May 26 '23 at 01:59