Gradle 列出本地项目依赖项

标签 gradle dependencies

我有以下项目结构:

root
- A
- B
    - B1
    - B2
- C

B1 依赖于 B2 和 A。B2 也依赖于 A 和 C。所有这些项目还具有从中央存储库下载的外部依赖项。

是否有一个 gradle 任务来获取所有本地依赖项(传递)?我想要某种

B1
- A
- B2
  - A
  - C

最好是平坦且没有重复的。项目本身也可能被省略,但这并不重要。 注意:不显示来自中央存储库的依赖项

这样的任务存在吗?

最佳答案

gradle 有多种检查依赖关系的方法,但我认为其中没有一个过滤器将其限制为仅“项目”依赖关系。请参阅https://docs.gradle.org/current/userguide/userguide_single.html#sec:listing_dependencies

另请注意,项目具有不同的依赖项配置,其中每个配置都有自己的一组依赖项。

因此,您需要讨论如何显示项目的所有“编译”依赖项。

然而,gradle 的一大优势是它可以轻松地使用 groovy 编写脚本。

这个快速草稿可以帮助我显示“编译”配置中的所有依赖项。 只需将其添加到根项目并调用“gradlew projectDependencies”即可。 这已经在一个示例项目中进行了测试(换句话说“大部分未经测试”),并且不是很灵活(“编译”配置是硬编码的)。 不过,我尝试通过使用显式类型和多行来使其易于理解,以便您可以扩展它:

task projectDependencies {
    doLast {
        showProjectDependencies(rootProject, 0)
    }
}

def showProjectDependencies(Project project, int nesting) {
    ConfigurationContainer configurations = project.configurations
    Configuration configuration = configurations.compile
    println " " * (3 * nesting) + project.name
    DomainObjectSet<ProjectDependency> projectDependencies = configuration.dependencies.withType ProjectDependency
    projectDependencies.forEach {
        showProjectDependencies(it.dependencyProject, nesting + 1)
    }
}

关于Gradle 列出本地项目依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54759663/

相关文章:

spring-boot - IntelliJ 无法识别 Kotlin JPA 插件

android - Android 2.3.3 中的 Gradle 错误

gradle - 与应用插件的区别

Git 子模块与依赖管理?

gradle - Gradle无法正确执行外部命令

java - 无法解析 com.hold1 :keyboardheightprovider:0. 0.9

objective-c - 在 XCode 4 中添加依赖项目

c++ - 如何将 'this' 作为参数传递给另一个没有循环依赖的类构造函数?

Java/Eclipse 依赖关系映射/绘图工具 - 我的项目中在哪里使用了 JAR?

maven - 在 Gradle 的 setting.xml 中使用 Maven 凭据