【问题标题】:Combining multiple gradle zip tasks into a single one将多个 gradle zip 任务组合成一个
【发布时间】:2021-01-30 06:38:39
【问题描述】:

我有一个 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

【问题讨论】:

    标签: java gradle groovy zip devops


    【解决方案1】:

    考虑以下情况(例如here):

    tasks.withType(Zip).all { task ->
        def taskName = task.name
    
        if (taskName ==~ /gradleTask.*/) {
            println "TRACER adding dependency on ${taskName}"
            compileJava.finalizedBy taskName
        }
    }
    

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

    没有zipAll 任务,但gradle compileJava 将按需要工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-25
      • 2014-08-05
      • 2013-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      • 1970-01-01
      相关资源
      最近更新 更多