【发布时间】:2021-12-23 02:53:11
【问题描述】:
Gradle 7 引入了 [版本目录][1]。有了它,我可以轻松地将依赖项称为例如libs.jacksonCore如果在gradle/libs.versions.toml中定义:
[versions]
jackson = "2.11.1"
[libraries]
jacksonCore = { module = "com.fasterxml.jackson.core:jackson-core", version.ref = "jackson" }
但是有没有办法以编程方式获取所有已定义依赖项的列表?
现在我在 libs 对象(属于 org.gradle.accessors.dm.LibrariesForLibs 类)上使用反射作为解决方法,但这真的很难看:
Map deps = libs.metaClass.methods
.findAll { it.returnType.name.endsWith("provider.Provider") }
.findAll { it.name.startsWith("get") }
.collect { libs."$it.name"().get() }
.collectEntries { [
(it.getModule().toString()): it.getVersionConstraint().toString()
] }
【问题讨论】:
标签: gradle gradle-dependencies