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=脚本路径

测试结果

相关推荐
Flynt11 分钟前
我试了Spring Boot 4的原生镜像,聊聊那些数字和坑
java·spring boot
峥嵘life7 小时前
Android16 311Y3 EAP-TLS 网络连接失败分析与修复总结
android·开发语言·人工智能·php
M-Robots echo7 小时前
轻量化裁剪方案解析:M-Robots 模块化构建,适配高低端各类机器人硬件平台
java·机器人·ros·开源社区·atomgit·m-robots
不可求~8 小时前
多模型路由怎么落地:把任务分流写进项目的最小实现
java·前端·数据库
Kapaseker8 小时前
破坏性更新 - 解读 Jetpack Compose 1.12
android·kotlin
雨白9 小时前
我的 UML 学习笔记:结合 Android 实例看懂 4 种常用图表
android·架构
mldong9 小时前
用 DDD 设计工作流引擎:聚合根与充血模型
java·架构
怣疯knight9 小时前
快速判断apk有没有支持16kb页面标准
android
风流 少年10 小时前
Spring AI 2.0:Advisor
android·人工智能·spring
mqiqe10 小时前
AgentScope Java Harness:4. 双层记忆系统 让 Agent 拥有真正的“长期大脑“
java·开发语言