如何让gradle在使用非编译依赖项时首先构建依赖子项目

如何让gradle在使用非编译依赖项时首先构建依赖子项目,gradle,Gradle,我怎么能告诉gradle先构建某个子项目,即使我对它们没有编译依赖关系?如何在内部处理项目依赖关系 例如: 设置。渐变: include "app", "schema" allprojects { apply plugin: 'java' } // empty configurations { schemas } dependencies { schemas project(":schema") schemas "org.example:example-sch

我怎么能告诉gradle先构建某个子项目,即使我对它们没有编译依赖关系?如何在内部处理项目依赖关系

例如:

设置。渐变

include "app", "schema"
allprojects {
  apply plugin: 'java'
}
// empty
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
构建.渐变

include "app", "schema"
allprojects {
  apply plugin: 'java'
}
// empty
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
模式/build.gradle

include "app", "schema"
allprojects {
  apply plugin: 'java'
}
// empty
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
应用程序/build.gradle

include "app", "schema"
allprojects {
  apply plugin: 'java'
}
// empty
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从配置.schemas列表中首先获取要构建的子项目列表非常重要


谢谢

Gradle构建顺序从不在项目级别,而是始终在任务级别<代码>来自(configuration.schemas)将自动推断任务依赖关系,但在
来自(configuration.schemas.collect{…})
的情况下,这不起作用,因为结果值不再是可构建的
。添加
dependsOn配置。模式应该可以解决这个问题。

渐变构建顺序从不在项目级别,而是始终在任务级别<代码>来自(configuration.schemas)
将自动推断任务依赖关系,但在
来自(configuration.schemas.collect{…})
的情况下,这不起作用,因为结果值不再是可构建的
。添加
dependsOn配置。模式应该可以解决这个问题。

您读过吗?您可以使extractSchema依赖于生成模式的任务,例如
任务extractSchema(type:Copy,dependsOn:':schema:assemble')
,但问题是我不想硬编码依赖项。Gradle应该能够自动解析configurations.schemas列表中的依赖项,并首先解析/构建它们。也许您可以根据配置使用依赖项。您阅读了吗?您可以使extractSchema依赖于生成模式的任务,例如
任务extractSchema(type:Copy,dependsOn:':schema:assemble')
,但问题是我不想硬编码依赖项。Gradle应该能够自动解析configurations.schemas列表中的依赖项,并首先解析/构建它们。也许您可以根据配置为依赖项使用。So
task extractSchema(type:Copy,dependsOn:configurations.schemas){…
So
task extractSchema(类型:Copy,dependsOn:configurations.schemas){…