Gradle 渐变列表本地项目依赖项

Gradle 渐变列表本地项目依赖项,gradle,dependencies,Gradle,Dependencies,我有以下项目结构: root - A - B - B1 - B2 - C B1依赖于B2和A。B2也依赖于A和C。所有这些项目都有从中央存储库下载的外部依赖项 是否有一个gradle任务来获取所有本地依赖项(可传递)?我想做点什么 B1 - A - B2 - A - C 最好是平的,没有重复的。项目本身也可能被省略,这并不重要注意:不显示来自中央存储库的依赖项 这样的任务存在吗?gradle有几种检查依赖项的方法,但我认为没有任何一种方法有一个过滤器将其限制为仅“项目

我有以下项目结构:

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

是否有一个gradle任务来获取所有本地依赖项(可传递)?我想做点什么

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


这样的任务存在吗?

gradle有几种检查依赖项的方法,但我认为没有任何一种方法有一个过滤器将其限制为仅“项目”依赖项。看

还请注意,项目具有不同的依赖项配置,其中每个配置都有自己的依赖项集

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

然而,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)
    }
}
任务项目依赖关系{
多拉斯特{
showProjectDependencies(rootProject,0)
}
}
def showProjectDependencies(项目、int嵌套){
ConfigurationContainer配置=project.configurations
Configuration=configurations.compile
println”“*(3*嵌套)+project.name
DomainObjectSet projectDependencies=configuration.dependencies.withType ProjectDependency
projectDependencies.forEach{
showProjectDependencies(it.dependencyProject,嵌套+1)
}
}