我正在开发一个gradle插件,该插件添加了3种配置。 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"));
});
答案 0 :(得分:0)
也许DomainObjectCollection.whenObjectAdded
方法可以帮助您。
在此处找到文档:
https://docs.gradle.org/current/javadoc/org/gradle/api/DomainObjectCollection.html
您可以尝试从项目的所有配置中获取DependencySet
,即DomainObjectCollection
,并在其上调用whenObjectAdded
,然后检查添加的内容是否是您的“ projectA”,然后执行您的操作。
或者,您可以使用project.afterEvaluate
,然后在该时间点搜索所有依赖项。
在两种情况下,相同的问题是获取所有依赖项的集合,并检查它们。
类似的事情可能起作用:
configurations.all().each {
if (it.allDependencies.contains(project(path: ':projectA'))) {
// do something
}
}