【问题标题】:How to get dependency list in gradle如何在gradle中获取依赖列表
【发布时间】:2013-08-15 12:36:18
【问题描述】:

我正在为 gradle 开发一个插件,它将检查许可证类型的依赖关系。我在插件 API 中没有找到任何如何获取项目的依赖项列表然后检索它的元数据(如许可证类型)的内容。

可以在gradle中使用吗?

【问题讨论】:

    标签: groovy gradle


    【解决方案1】:

    对于一般的依赖关系分析,请查看Gradle Build Language Reference 中的Configuration,尤其是Configuration.resolvedConfigurationConfiguration.incoming

    也就是说,Gradle 的依赖模型不会捕获许可证。除非您有一些可以查询此信息的外部服务,否则另一个选项是解析 Maven/Ivy 模块描述符。

    Gradle 目前不提供对 Maven/Ivy 模块描述符的直接访问权限。相反,您将创建一个分离的配置,使用指向描述符的依赖项动态填充它,解析配置,并自己解析描述符(例如,使用 Groovy 的优秀 XmlSlurper)。这不是微不足道的,而是可行的。

    另一种方法是使用存储库管理器的许可证报告功能,例如将ArtifactoryBlack Duck 结合使用。

    【讨论】:

    • 分离配置下是什么意思?我们应该创建一个新的并添加到配置容器中吗?
    • 据我了解,我们已经有了一些配置,例如 'compile'、'testCompile' 等。我发现,我们可以获取每个配置的 jar 文件列表。
    • 大概拿到pom文件就够了,还是我遗漏了什么?
    • 分离的配置是一个独立的配置,没有附加到配置容器。它是用ConfigurationContainer.detachedConfiguration(...) 创建的。直接从 compile 等配置中获取 POM 仅适用于包含其 POM 的档案。通常情况并非如此。
    • 分离的配置只是一个没有添加到configurations容器的配置。如果您按原样解析配置,您将只获得主要工件(例如 Jars),而不是 POM。缓存布局是一个实现细节,并且经常在 Gradle 版本之间发生变化,因此对其进行假设是不安全的。
    猜你喜欢
    • 1970-01-01
    • 2021-07-27
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 2020-04-27
    • 2017-12-27
    • 2018-06-19
    • 2017-09-07
    相关资源
    最近更新 更多