如何告诉 gradle 首先构建某个子项目,即使我没有对它们的编译依赖项?内部如何处理项目依赖关系?
示例:
settings.gradle:
include "app", "schema"
build.gradle:
allprojects {
apply plugin: 'java'
}
schema/build.gradle:
// empty
app/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 列表中获取要构建的子项目列表非常重要.
谢谢
最佳答案
Gradle 构建顺序从来不在项目级别,而始终在任务级别。 from(configuration.schemas)
会自动推断任务依赖关系,但在 from(configuration.schemas.collect { ... })
的情况下,这不起作用,因为结果值不再可构建
。添加 dependsOnconfigurations.schemas
应该可以解决问题。
关于gradle - 使用非编译依赖时如何让gradle先构建依赖子项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25180933/