Gradle自定义规则类

时间:2017-08-06 15:46:38

标签: gradle build

我知道可以通过扩展DefaultTask类来创建自定义任务类。是否可以对任务规则执行相同的操作?我需要扩展哪个课程以及如何?假设我想从Gradle文档中获取与此规则等效的自定义规则类:

tasks.addRule("Pattern: ping<ID>") { String taskName ->
    if (taskName.startsWith("ping")) {
        task(taskName) {
           doLast {
               println "Pinging: " + (taskName - 'ping')
            }
        }
    }
}

我使用的是Gradle 4.0。

1 个答案:

答案 0 :(得分:1)

我通过编写如下所述的插件来实现这一目标:joanolo

package com.domain

import org.gradle.api.Plugin
import org.gradle.api.Project

class PingPlugin implements Plugin<Project> {
    void apply(Project project) {
        project.tasks.addRule("Pattern: ping<ID>") { String taskName ->
            if (taskName.startsWith("ping")) {
                project.tasks.create(taskName) {
                    doLast {
                        println "Pinging: " + (taskName - 'ping')
                    }
                } 
            }
        }
    }
}

我不确定这是否是最好的方式,但它有效。使用它所需要的只是build.gradle中的一行:

apply plugin: com.domain.PingPlugin