【发布时间】:2013-08-15 12:36:18
【问题描述】:
我正在为 gradle 开发一个插件,它将检查许可证类型的依赖关系。我在插件 API 中没有找到任何如何获取项目的依赖项列表然后检索它的元数据(如许可证类型)的内容。
可以在gradle中使用吗?
【问题讨论】:
我正在为 gradle 开发一个插件,它将检查许可证类型的依赖关系。我在插件 API 中没有找到任何如何获取项目的依赖项列表然后检索它的元数据(如许可证类型)的内容。
可以在gradle中使用吗?
【问题讨论】:
对于一般的依赖关系分析,请查看Gradle Build Language Reference 中的Configuration,尤其是Configuration.resolvedConfiguration 和Configuration.incoming。
也就是说,Gradle 的依赖模型不会捕获许可证。除非您有一些可以查询此信息的外部服务,否则另一个选项是解析 Maven/Ivy 模块描述符。
Gradle 目前不提供对 Maven/Ivy 模块描述符的直接访问权限。相反,您将创建一个分离的配置,使用指向描述符的依赖项动态填充它,解析配置,并自己解析描述符(例如,使用 Groovy 的优秀 XmlSlurper)。这不是微不足道的,而是可行的。
另一种方法是使用存储库管理器的许可证报告功能,例如将Artifactory 与Black Duck 结合使用。
【讨论】:
ConfigurationContainer.detachedConfiguration(...) 创建的。直接从 compile 等配置中获取 POM 仅适用于包含其 POM 的档案。通常情况并非如此。
configurations容器的配置。如果您按原样解析配置,您将只获得主要工件(例如 Jars),而不是 POM。缓存布局是一个实现细节,并且经常在 Gradle 版本之间发生变化,因此对其进行假设是不安全的。