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

xkftehaa  于 2022-11-14  发布在  其他
关注(0)|答案(9)|浏览(225)

我正在尝试获取dependencyInsight或dependencies gradle任务的--configuration标志的所有有效值的列表。我如何使用Gradle 3.2.1来实现这一点?

lyfkaqu1

lyfkaqu11#

您是否尝试过:

configurations.each { println it.name }

von4xj4u

von4xj4u2#

尝试

gradle --console plain dependencies | fgrep ' - '

dependencies任务列出了所有配置(沿着它们的依赖项),fgrep只会显示配置名称(以及每个配置的简短描述)。这不是很好,但不需要您在构建脚本中输入内容。

bxgwgixi

bxgwgixi3#

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

./gradlew projects --info

现在查看Configure project部分,其中列出了所有配置。

jvidinwx

jvidinwx4#

将此添加到根项目:

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
1cosmwyk

1cosmwyk5#

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

configurations.forEach { println(it) }

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

configuration ':app:androidApis'
configuration ':app:androidJdkImage'
configuration ':app:androidTestAnnotationProcessor'
...

您也可以为此创建一个专用任务:

tasks.register("myConfigs") {
    doLast {
        configurations.forEach { println(it) }
    }
}

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

./gradlew myConfigs
j2cgzkjk

j2cgzkjk6#

以下是Java插件的所有配置:
https://docs.gradle.org/current/userguide/java_plugin.html#sec:java_plugin_and_dependency_management
compile(已弃用)编译时间依赖项。已被实现取代。
实现扩展了编译仅实现依赖项
compileOnly仅在编译时使用依赖项,在运行时不使用。
compileClasspath扩展了compile,compileOnly,编译类路径实现,在编译源代码时使用由compileJava任务使用
注解处理器编译期间使用的注解处理器。
runtime(已弃用)扩展编译运行时依赖项。已被runtimeOnly取代。
runtimeOnly仅运行时依赖项。
runtimeClasspath扩展runtimeOnly,运行时,实现运行时类路径包含实现得元素以及仅运行时元素.
testCompile(已弃用)扩展了编译测试的其他依赖项。已被testImplementation取代。
testImplementation扩展testCompile,实现测试的仅实现依赖项。
testCompileOnly仅用于编译测试的附加依赖项,在运行时不使用。
testCompileClasspath扩展了testCompile,testCompileOnly,testImplementation测试编译类路径,在编译测试源时使用。由任务compileTestJava使用。
testRuntime(已弃用)扩展运行时,testCompile仅用于运行测试的其他依赖项。已被testRuntimeOnly取代。
testRuntimeOnly扩展runtimeOnly运行测试的仅运行时依赖项。
testRuntimeClasspath扩展了testRuntimeOnly,testRuntime,testImplementation Runtime类路径以运行测试。由任务测试使用。
存档此项目生成的工件(例如jar)。由任务uploadArchives使用。
default extends runtimeClasspath此项目上的项目依赖项所使用的默认配置。包含此项目在运行时所需的工件和依赖项。

0tdrvxhp

0tdrvxhp7#

如果有人希望在命令行上执行此操作:

gradle outgoingVariants

您将不得不进行一些解析,但您将看到类似于以下内容的内容:

--------------------------------------------------
Variant yummyDebugRuntimeElements
--------------------------------------------------
Description = Runtime elements for debug
Capabilities
    - group:artifact:0.1 (default capability)
Attributes
    - com.android.build.api.attributes.BuildTypeAttr               = debug
    - com.android.build.api.attributes.ProductFlavor:default.      = yummy
    - com.android.build.api.attributes.VariantAttr                 = debug
    - com.android.build.gradle.internal.dependency.AndroidTypeAttr = Aar
    - org.gradle.usage                                             = java-runtime
    - org.jetbrains.kotlin.platform.type                           = androidJvm

...
qzwqbdag

qzwqbdag8#

@Mike Hanafey的answer的变体,使用GradleKotlinDSL,并添加另一个仅打印可解析配置的任务(用于传递到dependencyInsight--configuration参数)。

allprojects {
  fun printConfigurations(filter: (Configuration) -> Boolean = { true }) {
    configurations.filter(filter).forEach {
      println("\t${it.name}")
    }
  }

  task("printConfigurations") {
    doLast {
      println("${project.name} configurations:")
      printConfigurations()
    }
  }
  task("printResolvableConfigurations") {
    doLast {
      println("${project.name} resolvable configurations:")
      printConfigurations { it.isCanBeResolved }
    }
  }
}
c8ib6hqw

c8ib6hqw9#

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

相关问题