如何解决Gradle 插件开发:解决工具伪影的惯用方法
完成开发 Gradle 插件的菜鸟。
我正在为定制的人工制品包装工具开发一个插件。该工具可用作 maven 存储库中的胖 jar。有不止一种工具可以完成这项工作,因此插件需要弄清楚它需要哪一种,并向任务图添加解决步骤。
我想我需要:
- 为插件创建配置(“pluginXTools”)
- 找出我需要的人工制品并将其添加到
DependencyResolutionListener::beforeResolve
- 在我的插件打包任务中添加对解析步骤的依赖。
我如何将人工分辨率连接到我的任务中,使其成为构建图的一部分?有人可以向我展示我正在努力实现的目标的骨架?
解决方法
我在 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()
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。