【问题标题】:list gradle dependencies for all subprojects列出所有子项目的 gradle 依赖项
【发布时间】:2022-01-26 14:42:58
【问题描述】:

我可以使用 ./gradlew -q dependencies 查询 Gradle 项目的依赖关系树。

我还可以使用./gradlew service:dependencies 运行service 子项目的查询。

如何在不修改 gradle.properties 文件的情况下从命令行自动列出所有子项目的依赖项?

提前谢谢你。

【问题讨论】:

    标签: shell gradle build.gradle gradle-plugin gradlew


    【解决方案1】:

    我相信 Gradle 中没有内置方法可以实现这一点(无需调整构建配置)——除非您手动列出所有子项目的 dependencies 任务,如下所示:

    ./gradlew sub1:dependencies sub2:dependencies sub1:subsub:dependencies
    

    但是,如果您经常需要此功能,那么您可以为其创建一个 shell 别名。 bash 中的示例(例如,将其放入您的 ~/.bashrc 文件中):

    alias gradle-all-deps='./gradlew dependencies $(./gradlew -q projects \
        | grep -Fe ---\ Project \
        | sed -Ee "s/^.+--- Project '"'([^']+)'/\1:dependencies/"'")'
    

    然后只需从根项目目录调用gradle-all-deps。

    【讨论】:

    • 这看起来很棒!恐怕 sed 语法不完整,因为在某些情况下前缀是 \--- 而不是 +---
    • 谢谢!它应该已经适用于所有子项目:+ 是这里的量词,而不是文字。但不可否认,我错过了根项目;我已经更新了我的答案:-)
    【解决方案2】:

    在根项目的 build.gradle 文件中添加以下任务

    subprojects {
        task allDeps(type: DependencyReportTask) {}
    }
    

    并从根项目执行以下命令

    ./gradlew allDeps 
    

    这将列出所有子项目的依赖关系。

    如果您想进一步根据类型(compileClasspath、testRuntime ...)缩小依赖关系图,请参考this

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-15
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 1970-01-01
      • 2013-01-30
      • 1970-01-01
      相关资源
      最近更新 更多