gradle-tasks.register(‘classesJar‘, Jar)解析

在使用gradle作为构建工具的android或者java web项目中,我们经常能遇到以下格式

cpp 复制代码
tasks.register('classesJar', Jar) {
    from "$buildDir/intermediates/javac/release/classes" // 假设使用 release 构建变体
}

 artifact sourcesJar

使用伪代码解释

cpp 复制代码
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.customTaskRef
	println "测试" + task.fromSrc + "," + task.toSrc
	
}

artifact 'deoTest'

运行

cpp 复制代码
gradle --init-script=脚本路径

测试结果

相关推荐
xiaoye37084 小时前
Java 自动装箱 / 拆箱 原理详解
java·开发语言
YDS8295 小时前
黑马点评 —— 分布式锁详解加源码剖析
java·spring boot·redis·分布式
迷藏4946 小时前
**发散创新:基于 Rust的开源权限管理系统设计与实战**在现代软件架构中,**权限控制**早已不
java·开发语言·rust·开源
升鲜宝供应链及收银系统源代码服务6 小时前
《IntelliJ + Claude Code + Gemini + ChatGPT 实战配置手册升鲜宝》
java·前端·数据库·chatgpt·供应链系统·生鲜配送
daidaidaiyu6 小时前
Nacos实例一则及其源码环境搭建
java·spring
冬奇Lab6 小时前
AudioRecord音频录制流程深度解析
android·音视频开发·源码阅读
小江的记录本6 小时前
【Redis】Redis全方位知识体系(附《Redis常用命令速查表(完整版)》)
java·数据库·redis·后端·python·spring·缓存
摇滚侠7 小时前
Java 项目《谷粒商城-1》架构师级Java 项目实战,对标阿里 P6-P7,全网最强,实操版本
java·开发语言
zihao_tom7 小时前
Spring Boot(快速上手)
java·spring boot·后端
hua872228 小时前
SpringSecurity之跨域
java