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

测试结果

相关推荐
RainbowJie110 分钟前
从零到一:Maven 快速入门教程
java·maven
玲小珑11 分钟前
Auto.js 入门指南(五)实战项目——自动脚本
android·前端
玲小珑11 分钟前
Auto.js 入门指南(四)Auto.js 基础概念
android·前端
shangjg315 分钟前
Kafka数据怎么保障不丢失
java·分布式·后端·kafka
RainbowJie118 分钟前
Maven的生命周期
java·maven
唐墨12323 分钟前
PublishSubject、ReplaySubject、BehaviorSubject、AsyncSubject的区别
java·后端·spring
何中应24 分钟前
【设计模式-3.7】结构型——组合模式
java·设计模式·组合模式
爬菜28 分钟前
JUnit
java
敲键盘的小夜猫30 分钟前
RunnablePassthrough介绍和透传参数实战
java·服务器·前端
码农开荒路1 小时前
Redis底层数据结构之字典(Dict)
java·数据结构·数据库·redis