我应该如何将一个项目依赖项添加到一组有限的子项目中?
问题描述:
我想将特定项目依赖项添加到以特定名称开头的各个子项目中。我应该如何将一个项目依赖项添加到一组有限的子项目中?
我想这
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添加到一组有限的子项目中?
答
一个干净的解决方案是:
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
插件dependencies
块之前(否则添加apply plugin: "java"
)。
答
的subprojects
方法委托给Project
接口每个子项目,这就是为什么你的第二个示例工作的一个实例(Project
有一个名为dependencies()
方法)。然而,each
方法只是通过Project
对象作为参数。然后您需要调用该对象上的dependencies()
方法。这需要一个简单的语法变化。
subprojects.findAll { project ->
project.name.startsWith("myproject-sample")
}.each { project ->
project.dependencies {
compile project(":myproject-core")
}
}