我在 Gradle slack 中询问并查看了一些现有的插件。在 Gradle 中解决工具依赖项的约定是使用插件 API 来注册具有所需依赖项的隐藏配置。
以下 Kotlin 代码段显示了为特定工具注册配置所需的内容:
project.configurations.create("someInternalConfigName").apply {
isVisible = false
isTransitive = false
description = "My internal config for resolving tool"
defaultDependencies { deps ->
deps.add(
project.dependencies.create("my.compiler:the-compiler:1.2.3")
)
}
}
在任务执行期间,您可以执行以下操作:
private fun resolveCompilerTool(task: Task): URL =
task.project.configurations.getAt("someInternalConfigName").let {
it.resolve()
assert(it.files.size == 1) { "expect a single dependency file" }
it.files.first().toURI().toURL()
}