gradle - Gradle自定义规则类

标签 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。

最佳答案

我通过编写一个插件来实现这一点,如下所述: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')
                    }
                } 
            }
        }
    }
}

我不确定这是否是最好的方法,但是它可以工作。使用它只需在build.gradle中一行:
apply plugin: com.domain.PingPlugin

关于gradle - Gradle自定义规则类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45533743/

相关文章:

Gradle - 无法访问类字段

android - 如何在 gradle 脚本中获取 Running Android Flavor Name

groovy - Gradle:如何配置 buildSrc 或从主项目跳过测试?

java - jacoco 测试报告不排除包

java - Gradle 同步失败 : Could not find com. android.tools.build :gradle:3. 6.2 问题

java - 发布时找不到资源包

c++ - 如何在 CMake 中使用对象库创建共享库

build - 构建 openjdk 时未找到 C 编译器

c# - 以编程方式构建和发布 .net Web App

ant - 在 Ant 或 MSBuild 中编写构建脚本的任何最佳实践