gradle - 依赖来自同一个依赖项的多个配置
问题描述
我正在开发一个添加 3 个配置的 gradle 插件。one
, two
, 和three
当我使用这个插件时,我可以将依赖项添加到这些配置中,然后插件根据配置以某种方式使用这些依赖项。这在单个项目中效果很好,但是如果在多项目构建中,我不得不添加以下内容以从我的依赖项目中获取依赖项:
dependencies {
one project(path: ':projectA', configuration: 'one')
two project( path: ':projectA', configuration: 'two')
three project( path: ':projectA', configuration: 'three')
}
有没有办法让当我声明对我的其他项目的依赖时,它会自动拉入我的三个自定义配置:one
、、two
和three
在我的插件中,我创建了一个使用不同配置的任务:
project.getTasks().create("my-task", MyTask.class, t -> {
t.getOnes().setFrom(
project.getConfigurations().getByName("one"));
t.getTwos().setFrom(
project.getConfigurations().getByName("two"));
t.getThrees().setFrom(
project.getConfigurations().getByName("three"));
});
解决方案
也许该方法DomainObjectCollection.whenObjectAdded
可以帮助您。
在此处查找文档:
https ://docs.gradle.org/current/javadoc/org/gradle/api/DomainObjectCollection.html
您可以尝试DependencySet
从项目的所有配置中获取 a ,即 a DomainObjectCollection
,然后调用whenObjectAdded
它,然后检查添加的内容是否是您的“projectA”,然后执行您的操作。
或者,您可以使用project.afterEvaluate
然后搜索该时间点的所有依赖项。
两种情况下的相同问题是获取所有依赖项的集合并检查它们。
像这样的东西可以工作:
configurations.all().each {
if (it.allDependencies.contains(project(path: ':projectA'))) {
// do something
}
}
推荐阅读
- azure-devops - 如何使用 Rest API 为 DevOps 上的产品待办事项添加标签?
- python - 用于矩阵修改的python双循环
- excel - 宏自动在单元格下方添加 5 行,其值为 beta,并使用 VBA 关注第一个新添加的行
- c++ - zlib Inflate 在 C++ 中解压缩 .bmp 图像文件时返回 -3
- python - Python Google Sheet API 疑难解答 - 快速入门教程
- python - 使用 Python SDK 从 Dropbox Team 文件夹下载文件
- php - 从经纬10km以下的Sql中获取用户
- c# - JsonReaderException - 解析值时遇到意外字符
- python - solve_ivp(ODE 求解器)的实现
- elasticsearch - Elastic APM 服务器性能低下