【问题标题】:How can I get a list of all configurations for a Gradle project?如何获取 Gradle 项目的所有配置列表?
【发布时间】:2016-12-15 21:28:33
【问题描述】:

我正在尝试获取dependencyInsightdependencies gradle 任务的--configuration 标志的所有有效值的列表。我将如何使用 Gradle 3.2.1 执行此操作?

【问题讨论】:

    标签: gradle


    【解决方案1】:

    你试过了吗:

    configurations.each { println it.name }
    

    ?

    【讨论】:

    • 这会放在我的主要build.gradle 文件中吗?
    • @Cliabhach,例如是的。您也可以将其添加为任务。
    • 不用等,我明白了。结果我需要运行gradle app:dependencyInsight --dependency joda-time --configuration compile,而不是gradle dependencyInsight --dependency joda-time --configuration compile
    • 这个命令可以从命令行运行吗?我真的不需要将 litter 放入我的构建脚本中。
    • 查看 Niel 更现代的答案 stackoverflow.com/a/57530371,它使用 ./gradlew projects --info 列出配置
    【解决方案2】:

    试试

    gradle --console plain dependencies | fgrep ' - '
    

    依赖项任务列出所有配置(以及它们的依赖项),fgrep 只会显示配置名称(以及每个配置的简要说明)。这不是很好,但不需要您将内容放入构建脚本中。

    【讨论】:

    • 哦,有趣的想法。你用的是什么版本的 Gradle?
    • @Cliabhach 我不记得我最初使用的是哪个版本,但我目前使用的是 4.9,它仍然有效。顺便说一句,“--console plain”可能会改善输出(更新我的答案以包含它)。
    • 这只会打印一小部分配置。例如archives - 存档工件的配置。 default - 默认工件的配置。 jacocoAgent - 用于获取覆盖数据的 Jacoco 代理。 jacocoAnt - 用于执行 Gradle 任务的 Jacoco ant 任务。 (*) - 省略依赖项(之前列出)
    【解决方案3】:

    使用 Gradle 5,使用 --info 选项非常简单。例如:

    ./gradlew projects --info
    

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

    【讨论】:

    • 嗯,这似乎在 Gradle 5.5.1 上运行良好。我认为您可以在配置相关项目的任何命令上使用--info,并在输出中搜索Creating configuration
    • 您可以在./gradlew projects 任务上添加指向官方(例如 gradle.org)文档的链接吗?
    • @Cliabhach --info 只是将日志记录级别设置为INFO
    • 我看看能不能!它被称为“项目”这一事实并没有多大帮助......
    • 我认为这不再提供有用的输出,这可能是由于 Gradle 在可解析和可消耗配置方面变得更加智能(而不是一直急切地评估所有配置)。
    【解决方案4】:

    将此添加到根项目:

    allprojects {
        repositories {
            // ....
        }
    
        task printConfigurations {
            doLast {task ->
                println "Project Name: $project.name configurations:"
                configurations.each {
                    println "    $it.name"
                }
            }
        }
    }
    

    那么,例如:

    $ ./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
    

    【讨论】:

      【解决方案5】:

      Java插件的所有配置如下:

      https://docs.gradle.org/current/userguide/java_plugin.html#sec:java_plugin_and_dependency_management

      compile(Deprecated) 编译时间依赖。被取代 实施。

      implementation extends compile 仅实现依赖项。

      compileOnly 仅编译时依赖,不在运行时使用。

      compileClasspath 扩展了 compile、compileOnly、实现 Compile 类路径,编译源码时使用。由任务 compileJava 使用。

      annotationProcessor 编译期间使用的注解处理器。

      runtime(Deprecated) 扩展了编译运行时依赖项。被取代 通过 runtimeOnly。

      runtimeOnly 仅运行时依赖项。

      runtimeClasspath 扩展 runtimeOnly、runtime、实现 Runtime 类路径包含实现的元素,以及运行时 只有元素。

      testCompile(Deprecated) extends compile 额外的依赖 编译测试。被 testImplementation 取代。

      testImplementation 扩展 testCompile,实现 Implementation 仅用于测试的依赖项。

      testCompileOnly 仅用于编译测试的附加依赖项,而不是 在运行时使用。

      testCompileClasspath 扩展了 testCompile、testCompileOnly、 testImplementation 测试编译类路径,编译测试时使用 来源。由任务 compileTestJava 使用。

      testRuntime(Deprecated) 扩展运行时,testCompile 附加 仅用于运行测试的依赖项。被 testRuntimeOnly 取代。

      testRuntimeOnly 扩展 runtimeOnly 仅运行时依赖项 运行测试。

      testRuntimeClasspath 扩展了 testRuntimeOnly、testRuntime、 testImplementation 用于运行测试的运行时类路径。被任务使用 测试。

      存档由该项目产生的工件(例如罐子)。被任务使用 上传档案。

      default 扩展 runtimeClasspath 使用的默认配置 项目对这个项目的依赖。包含工件和 此项目在运行时所需的依赖项。

      【讨论】:

        【解决方案6】:

        只需在不带--configuration 标志的情况下运行这些命令,输出的第一行将是可用配置的列表

        【讨论】:

        • 你能举个例子来说明你在说什么吗?我在输出中没有看到配置列表。
        • @DavidKennedy 我无法用我当前的 Gradle 4.10.2 重现它,但我记得在以前的版本中,如果我省略了 --configuration 标志,它会列出所有可能的配置
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-23
        • 1970-01-01
        • 1970-01-01
        • 2011-03-17
        • 1970-01-01
        • 2019-11-02
        相关资源
        最近更新 更多