Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将多个gradle zip任务合并为一个任务_Java_Gradle_Groovy_Zip_Devops - Fatal编程技术网

Java 将多个gradle zip任务合并为一个任务

Java 将多个gradle zip任务合并为一个任务,java,gradle,groovy,zip,devops,Java,Gradle,Groovy,Zip,Devops,我有一个gradle任务,将.yaml文件压缩到一个zip文件夹中,如下所示: task gradleTask1(type: Zip) { from 'src/test/resources/source_one/' include '**/*' archiveName 'file-collect.zip' destinationDir(file("${buildDir}/resources/test/staging/target_one"))

我有一个gradle任务,将
.yaml
文件压缩到一个zip文件夹中,如下所示:

task gradleTask1(type: Zip) {
    from 'src/test/resources/source_one/'
    include '**/*'
    archiveName 'file-collect.zip'
    destinationDir(file("${buildDir}/resources/test/staging/target_one"))
}
类似地,我还有其他看起来相同的任务,但源目录和目标目录不同

task gradleTask2(type: Zip) {
    from 'src/test/resources/source_two/'
    include '**/*'
    archiveName 'file-collect.zip'
    destinationDir(file("${buildDir}/resources/test/staging/target_two"))
}

task gradleTask3(type: Zip) {
    from 'src/test/resources/source_three/'
    include '**/*'
    archiveName 'file-collect.zip'
    destinationDir(file("${buildDir}/resources/test/staging/target_three"))
}
主要问题是,每次添加新的zip任务时,我都必须添加依赖项,如下所示:

compileJava.finalizedBy gradleTask1

compileJava.finalizedBy gradleTask2

compileJava.finalizedBy gradleTask3
有什么方法可以动态地实现这些步骤吗?我可以有一个单独的zip任务(类似于
zipAll
)吗?最后,任务依赖关系可以是

compileJava.finalizedBy zipAll
考虑以下(示例):

这将动态查找名称与
gradleTask*
匹配的
Zip
类型的任务,并将其添加到
compileJava.finalizedBy
的任务列表中

没有
zipAll
任务,但是
gradlecompilejava
将按需要工作

tasks.withType(Zip).all { task ->
    def taskName = task.name

    if (taskName ==~ /gradleTask.*/) {
        println "TRACER adding dependency on ${taskName}"
        compileJava.finalizedBy taskName
    }
}