如何获取Gradle子项目依赖的Project对象列表?
获取子项目依赖的Project对象列表
在Gradle中,subproject.dependencies返回的DependencyHandler包含多种类型的依赖(项目依赖、外部库依赖等),要提取其中的Project对象,你需要筛选出项目依赖(ProjectDependency类型),再通过其属性获取对应项目:
Groovy DSL 实现
// 获取所有配置下的项目依赖对应的Project对象 def projectDependencies = subproject.dependencies.allDependencies.findAll { dep -> dep instanceof ProjectDependency }.collect { dep -> dep.dependencyProject } // 仅获取implementation配置下的项目依赖 def implementationProjectDeps = subproject.configurations.implementation.dependencies.findAll { it instanceof ProjectDependency }.collect { it.dependencyProject }
Kotlin DSL 实现
// 获取所有配置下的项目依赖对应的Project对象 val projectDependencies = subproject.dependencies.allDependencies .filterIsInstance<ProjectDependency>() .map { it.dependencyProject } // 仅获取implementation配置下的项目依赖 val implementationProjectDeps = subproject.configurations.implementation.dependencies .filterIsInstance<ProjectDependency>() .map { it.dependencyProject }
说明:
allDependencies会遍历DependencyHandler中所有配置的依赖;如果只关注特定配置(如api、testImplementation),直接替换为对应配置的dependencies集合即可。ProjectDependency是Gradle中专门表示项目依赖的类型,其dependencyProject属性就是你需要的目标Project对象。
内容的提问来源于stack exchange,提问作者Alexey
相关产品推荐
相关产品推荐

