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

测试结果

相关推荐
玖米GEO运营王总监15 分钟前
2026年账号矩阵协同效应怎么量化:三个指标与公式结构
java·大数据·数据库
叼烟扛炮1 小时前
[LangChain] 学习笔记(03):打破失忆症——对话机制与上下文管理
java·前端·javascript·笔记·学习·langchain
文丑颜不良啊2 小时前
LeetCode2061~2080题目解析
java·leetcode
特立独行的猫A2 小时前
13MB 单文件、一条命令变服务:把仓颉写的 cjh 内嵌进你的应用,当它的 AI 大脑
java·后端·python
.痞老板.2 小时前
mysql初阶--数据类型
android·数据库·mysql
StarsGreen2 小时前
Android 启动流程详解
android·linux·单片机·嵌入式硬件
Brookty2 小时前
Java博客项目实战|工程环境与构建:工程目录、PowerShell命令调用与JDK/IDEA/Maven工作机制
java·项目实战
养军博客3 小时前
Spring Boot 3.x + Spring Security 6.x 整合 JWT 实战:jjwt 与 java-jwt 两种工具库详解
java·spring boot·springsecurity
TeamDev3 小时前
使用 JxBrowser 在桌面应用中集成 Spring
java·前端·后端·spring·混合应用·jxbrowser·浏览器控件
J.YA3 小时前
String字符串[面试题]
java·开发语言