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

测试结果

相关推荐
狼爷33 分钟前
Go 没有 override?别硬套继承!用接口+嵌入,写更清爽的“覆盖”逻辑
java·go
BoomHe1 小时前
Now in Android 架构模式全面分析
android·android jetpack
小兔崽子去哪了3 小时前
Java 自动化部署
java·后端
ma_king3 小时前
入门 java 和 数据库
java·数据库·后端
后端AI实验室3 小时前
我用Cursor开发了3个月,整理出这套提效4倍的工作流
java·ai
码路飞7 小时前
GPT-5.3 Instant 终于学会好好说话了,顺手对比了下同天发布的 Gemini 3.1 Flash-Lite
java·javascript
SimonKing8 小时前
OpenCode AI编程助手如何添加Skills,优化项目!
java·后端·程序员
二流小码农8 小时前
鸿蒙开发:上传一张参考图片便可实现页面功能
android·ios·harmonyos
鹏程十八少9 小时前
4.Android 30分钟手写一个简单版shadow, 从零理解shadow插件化零反射插件化原理
android·前端·面试
Kapaseker9 小时前
一杯美式搞定 Kotlin 空安全
android·kotlin