以编程方式获取 gradle 依赖项

Get gradle dependencies programmatically

提问人:rysv 提问时间:5/25/2023 更新时间:5/26/2023 访问量:118

问:

我想在 Android 项目的 Gradle 中以编程方式获取依赖项。

我尝试过(在项目和模块级别的gradle.build中):

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

但是我收到此错误:

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

我正在使用 Gradle 7.5 版

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

我错过了什么?

gradle gradlew android-gradle-7.0

评论


答:

1赞 minh tri Vo 5/25/2023 #1

该配置由插件提供,更多信息请参见 https://docs.gradle.org/current/userguide/java_plugin.html#sec:java_plugin_and_dependency_managementcompileClasspathjava

所以要访问配置,插件 Java 声明是必需的compileClasspath

plugins {
   id 'java'
}

对于默认使用插件的 Android 项目,没有配置。我能想到这个替代解决方案:kotlincompileClasspath

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"

评论

0赞 rysv 5/25/2023
我想 Android Studio 内置了 java,我无法添加此插件。
0赞 rysv 5/26/2023
Minh,你是对的。在我更改为有效配置后,它起作用了!debugRuntimeClasspath