android Gradle脚本 task-> export Jar

背景

我们有个SDK module,常常有导出Jar包的需要
主要有以下需求

  1. 通过 createFullJarRelease 指令导出jar包,jar位置位于build/intermediates/full_jar/realse/full.jar
  2. 打出的jar包希望自动copy到工程的release目录下,便于查找
  3. 另外希望通过时间戳对jar包自动重命名

思路

  1. 在gradle中新建task -> exportJar
  2. 执行build
    // task1.dependsOn(task2) 意味着执行task1前需要先执行task2
       exportJar.dependsOn(deleteOldJar, build)
    
  3. 在build完成后执行createFullJarRelease
    task finalize {
    	 doLast {
    			 System.out.println("execute createFullJarRelease")
    			 createFullJarRelease.doTaskAction()
    	 }
    }
    //build执行完后执行finalize task,只需要在doLast中执行createFullJarRelease即可
    build.finalizedBy(finalize)
    
  4. 清空release目录下的文件
    //遍历文件夹的文件全部清除,防止旧jar干扰新jar
    task deleteOldJar(type: Delete) {
    		FileTree tree = fileTree("release")
    			 tree.visit {
    	 			element -> delete element.file
    			 }
    }
    
  5. 把fullJar/release下的jar拷贝到release文件夹下并重命名
    	//拷贝jar,并用日期作为版本,用时分秒区分jar包防止没有生成
    	task exportJar(type: Copy) {
    		from('build/intermediates/full_jar/release/')
    		into('release/')
    		 include('full.jar')
    		///Rename the jar
    		 def calendar = Calendar.getInstance()
    		var year = calendar.get(Calendar.YEAR)
    		 var month = calendar.get(Calendar.MONTH) + 1
    		 var day = calendar.get(Calendar.DAY_OF_MONTH)
    		 var sdf = new SimpleDateFormat("HHmmss")
    		var jarName = "sdk_v" + year + "." + month + "." + day + "_" +sdf.format(calendar.getTime()) + ".jar"
    		rename('full.jar', jarName)
    }
    

执行task日志

请添加图片描述

代码

module的.gradle文件

///
task finalize {
    doLast {
        System.out.println("execute createFullJarRelease")
        createFullJarRelease.doTaskAction()
    }
}
build.finalizedBy(finalize)

task deleteOldJar(type: Delete) {
    FileTree tree = fileTree("release")
    tree.visit {
        element -> delete element.file
    }
}

//task to export contents as jar
task exportJar(type: Copy) {
    from('build/intermediates/full_jar/release/')
    into('release/')
    include('full.jar')
    ///Rename the jar
    def calendar = Calendar.getInstance()
    var year = calendar.get(Calendar.YEAR)
    var month = calendar.get(Calendar.MONTH) + 1
    var day = calendar.get(Calendar.DAY_OF_MONTH)
    var sdf = new SimpleDateFormat("HHmmss")
    var jarName = "sdk_v" + (year - 2017) + "." + month + "." + day + "_" + sdf.format(calendar.getTime()) + ".jar"
    rename('full.jar', jarName)
}
exportJar.dependsOn(deleteOldJar, build)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值