我想将一个项目依赖项添加到以特定名称开头的各个子项目中。
我试过这个
subprojects.findAll { project -> project.name.startsWith("myproject-sample") }.each { project ->
dependencies {
//compile project(":myproject-core")
}
}
但它给出了
A problem occurred evaluating root project 'myproject'.
> Could not find method call() for arguments [:myproject-core] on project ':myproject-sample-hello-world'.
当我这样做时
subprojects {
dependencies {
compile project(":myproject-core")
}
}
它似乎有效。但它将dep添加到所有子项目中。
如何将项目dep添加到一组有限的子项目中?
答案 0 :(得分:2)
一个干净的解决方案是:
def sampleProjects = subprojects.findAll { it.name.startsWith("sample") }
configure(sampleProjects) {
dependencies {
compile project(":myproject-core")
}
}
或者:
subprojects {
if (project.name.startsWith("sample")) {
dependencies {
compile project(":myproject-core")
}
}
}
两个代码段都假设示例项目已经应用了java
插件(否则在apply plugin: "java"
阻止之前添加dependencies
。
答案 1 :(得分:0)
subprojects
方法委托给每个子项目的Project
接口的实例,这就是您的第二个示例有效的原因(Project
有一个名为dependencies()
的方法)。然而,each
方法只是作为参数传递Project
对象。然后,您需要在该对象上调用dependencies()
方法。这需要简单的语法更改。
subprojects.findAll { project ->
project.name.startsWith("myproject-sample")
}.each { project ->
project.dependencies {
compile project(":myproject-core")
}
}