2017-08-06 146 views
1

我知道可以通過擴展DefaultTask類來創建自定義任務類。有沒有可能對任務規則做同樣的事情?我需要延續哪一類課程?假設我想從Gradle文檔中獲得與此規則等效的自定義規則類:Gradle自定義規則類

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

我使用Gradle 4.0。 https://docs.gradle.org/4.0/userguide/custom_plugins.html

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') 
        } 
       } 
      } 
     } 
    } 
} 

我不知道這是否是最好的方式,但它的工作原理:

回答

1

我通過編寫一個插件這裏描述的實現這一點。它只需要一行build.gradle

apply plugin: com.domain.PingPlugin