我怎么能告诉gradle首先构建某个子项目,即使我没有编译依赖项呢?如何在内部处理项目依赖?
示例:
settings.gradle :
include "app", "schema"
的build.gradle :
allprojects {
apply plugin: 'java'
}
架构/的build.gradle :
// empty
应用/的build.gradle :
configurations {
schemas
}
dependencies {
schemas project(":schema")
schemas "org.example:example-schema:1.0"
}
task extractSchema(type: Copy) {
from {
configurations.schemas.collect { zipTree(it) }
}
into "build/schemas"
}
//compileJava.dependsOn extractSchema
跑步时:
$ cd app
$ gradle extractSchema
我明白了:
Cannot expand ZIP 'schema/build/libs/schema.jar' as it does not exist.
我想要的是gradle首先自动构建在 configurations.schemas 依赖关系列表中定义的所有子项目(如果它们是项目)。
注意:我希望能够跨多个gradle项目共享extractSchema任务,因此gradle首先从 configurations.schemas 列表中获取要构建的子项目列表非常重要
由于
答案 0 :(得分:4)
Gradle构建顺序从不在项目级别,但始终在任务级别。 from(configuration.schemas)
会自动推断任务依赖关系,但如果是from(configuration.schemas.collect { ... })
,则不起作用,因为结果值不再是Buildable
。添加dependsOn configurations.schemas
可以解决问题。