如何获取Gradle项目的所有配置列表?

Cli*_*ach 34 gradle

我正在尝试获取dependencyInsight依赖项 gradle任务的--configuration标志的所有有效值的列表.我将如何使用Gradle 3.2.1进行此操作?

Opa*_*pal 33

你有没有尝试过:

configurations.each { println it.name }
Run Code Online (Sandbox Code Playgroud)

  • 可以从命令行运行此命令吗?我真的不需要将_litter_放入我的构建脚本中. (23认同)
  • 没等了,我明白了.原来我需要运行`gradle app:dependencyInsight --dependency joda-time --configuration compile`,而不是`gradle dependencyInsight --dependency joda-time --configuration compile`. (6认同)
  • 这会出现在我的主“build.gradle”文件中吗? (2认同)

Iva*_*sov 15

gradle proj:resolvableConfigurations | grep "^Configuration"
Run Code Online (Sandbox Code Playgroud)

您可能runtimeClasspath想要:dependencyInsight.

解释:

实际上有一个内置任务resolvableConfigurations (自Gradle 7.5起),因此不再需要在构建脚本中包含自定义配置打印逻辑。

它的输出相当冗长且笨拙,作为仅找出配置列表的方法——提取grep名称行。当然,您可以更进一步,删除“配置”一词以仅获取名称:

gradle proj:resolvableConfigurations | grep "^Configuration" | sed "s/Configuration //g"
Run Code Online (Sandbox Code Playgroud)


Nie*_*Wet 14

Gradle 5 的--info选项非常简单。例如:

./gradlew projects --info
Run Code Online (Sandbox Code Playgroud)

现在查看Configure project列出所有配置的部分。

  • 我认为这不再提供有用的输出,可能是因为 Gradle 在可解析配置与可消耗配置方面变得更加智能(并且不会一直热切地评估所有配置)。 (16认同)

Mik*_*fey 14

将其添加到根项目:

allprojects {
    repositories {
        // ....
    }

    task printConfigurations {
        doLast {task ->
            println "Project Name: $project.name configurations:"
            configurations.each {
                println "    $it.name"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

那么,例如:

$ ./gradlew -q :SubProjA:printConfigurations
Project Name: SubProjA configurations:
    -api
    -runtime
    annotationProcessor
    api
    apiDependenciesMetadata
    apiElements
    archives
    compile
    compileClasspath
    compileOnly
    compileOnlyDependenciesMetadata
    default
    implementation
    implementationDependenciesMetadata
    kotlinCompilerClasspath
    kotlinCompilerPluginClasspath
    kotlinKlibCommonizerClasspath
    kotlinNativeCompilerPluginClasspath
    kotlinScriptDef
    kotlinScriptDefExtensions
    runtime
    runtimeClasspath
    runtimeElements
    runtimeOnly
    runtimeOnlyDependenciesMetadata
    sourceArtifacts
    testAnnotationProcessor
    testApi
    testApiDependenciesMetadata
    testCompile
    testCompileClasspath
    testCompileOnly
    testCompileOnlyDependenciesMetadata
    testImplementation
    testImplementationDependenciesMetadata
    testKotlinScriptDef
    testKotlinScriptDefExtensions
    testRuntime
    testRuntimeClasspath
    testRuntimeOnly
    testRuntimeOnlyDependenciesMetadata
Run Code Online (Sandbox Code Playgroud)


Mar*_*ark 12

尝试

gradle --console plain dependencies | fgrep ' - '
Run Code Online (Sandbox Code Playgroud)

依赖项任务列出了所有配置(及其依赖项),fgrep将只显示配置名称(以及每个配置名称的简要说明).它不是很好,但不要求你把东西放在你的构建脚本中.


Mah*_*zad 7

这是与其他答案等效的Kotlin DSL (build.gradle.kts ):

configurations.forEach(::println)
Run Code Online (Sandbox Code Playgroud)

将上述语句放在 build.gradle.kts 文件的顶部。每当您运行任何任务(例如build )时,它都会打印如下内容:

configuration ':app:androidApis'
configuration ':app:androidJdkImage'
configuration ':app:androidTestAnnotationProcessor'
...
Run Code Online (Sandbox Code Playgroud)

您还可以为此创建专门的任务:

tasks.register("myConfigs") {
    doLast {
        configurations.forEach { println(it) }
    }
}
Run Code Online (Sandbox Code Playgroud)

从命令行运行任务,如下所示:

./gradlew myConfigs
Run Code Online (Sandbox Code Playgroud)