gradle-tasks.register(‘classesJar‘, Jar)解析
在使用gradle作为构建工具的android或者java web项目中,我们经常能遇到以下格式
tasks.register('classesJar', Jar) {from "$buildDir/intermediates/javac/release/classes" // 假设使用 release 构建变体
}artifact sourcesJar
使用伪代码解释
class CustomTasks{def taskMap = new HashMap()def register(taskName, taskClass, closure){def task = taskClass.newInstance();taskMap.put(taskName, task)closure.call(task)}
}class JarTask{def customTaskRef = "我是一个自定义任务"def fromSrc = ""def toSrc = ""def doSelf(){println "定义一任务执行体,action"}def from(src){fromSrc = src}def to(src){toSrc = src}}def tasks2 = new CustomTasks();tasks2.register("deoTest", JarTask){it.from "src/main/java/com"it.to "src/test/java/com"
}def artifact = {def task = tasks2.taskMap[it]println "测试" + task.customTaskRefprintln "测试" + task.fromSrc + "," + task.toSrc}artifact 'deoTest'
运行
gradle --init-script=脚本路径
测试结果