博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Gradle 自定义Task 打Jar包
阅读量:5254 次
发布时间:2019-06-14

本文共 2074 字,大约阅读时间需要 6 分钟。

可以作为Jar包内容的有两个地方:

1: build/intermediates/bundles/release/ 下的classes.jar2: build/intermediates/classes/release/ 下 你的工程目录

方式1,采用的方式为copy,也就是网上最多、最容易搜索、最重复的方式:

task makeJar(type: Copy) {     delete 'build/libs/App'sName.jar'     from( 'build/intermediates/bundles/release ')      into( 'build/libs')      include('classes.jar')      rename('classes.jar', 'App'sName.jar')  }makeJar.dependsOn(build)

当你需要生成Jar包的时候,在命令行Terminal中,输入gradlew makeJar 

就会在 ’build/libs‘目录下生成你命名的jar包。 
但会有缺点,无法自定义的编辑我要输入的文件和文件夹,所以,作为码农感觉不是很爽。 
(Ps: 即使可以手动的剔除不需要的文件,但是不自动话,感觉很low~) 
简要说明:task后面的makeJar 就是方法名,你可以随意命名,到时候你执行命令的时候执行该方法就可以。至于其他deletey删除什么,from从哪里读,into到哪里去,include包括什么,rename要改什么名字,exclude去除什么,dependsOn就是依赖什么。。。等等字面意思就是它要表达的意思。

方式2:这个是个人比较喜欢的,因为你可以更自由的选择你想要打入jar包的文件和文件夹。

task makeJar(type: Jar) {    delete 'build/libs/App'sName.jar'    baseName 'App'sName'    from('build/intermediates/classes/release')    exclude('android/',  'BuildConfig.class', 'R.class')    exclude {        it.name.startsWith('R$');    }}makeJar.dependsOn(build)

这个方法很好的满足了我的需求,稍显不足的是有的工程会在App工程的src下面写入’resources/xxx.properties‘文件进入配置,这样生成的jar包就会没有该配置文件,现在有一种比较笨的方法,就是手动的把文件拷进去。So作为码农,这样依旧感觉很low。。所以我们就要想另外一种方法。 

我们回头看看方式1是copy,方式2是jar的方式,所以我们可以融合一下,就解决我们的问题了。 
Ps:resources 生成的文件的路径为:

build/intermediates/sourceFolderJavaResources/release

所以我们现在需要写两个task

task copyProperties(type: Copy) {    delete 'build/intermediates/classes/release/xxx.properties'    from('build/intermediates/sourceFolderJavaResources/release')    into('build/intermediates/classes/release/')}task makeJar(type: Jar) {    delete 'build/libs/App'sName.jar'    baseName 'App'sName'    from('build/intermediates/classes/release')    exclude('android/',  'BuildConfig.class', 'R.class')    exclude {        it.name.startsWith('R$');    }}copyProperties.dependsOn(build)makeJar.dependsOn(copyProperties)

当需要执行的时候,在命令行Terminal中,输入gradlew makeJar,就可以在’build/libs ‘文件夹下面看到我们的想要的jar包了。 

执行顺序为copyProperties在执行build完之后,makeJar在执行copyProperties之后。

以上就是下午看了一会,更多的也是借鉴其他人的一些经验,写出来的一点点心得等。如有不足和雷同,请不吝指出,感谢~

转载于:https://www.cnblogs.com/zhujiabin/p/7611168.html

你可能感兴趣的文章
【MySQL】局域网内:在一台电脑访问另一台电脑的mysql数据库
查看>>
【微信小程序】获取轮播图当前图片下标、滑动展示对应的位数、点击位数展示对应图片...
查看>>
新开博客随笔
查看>>
js+html实现玫瑰花绽放
查看>>
入门Java编程的简单引导
查看>>
WCF的一些基本知识点
查看>>
android学习笔记21——消息提示Toast
查看>>
Flow自动抓取SharePoint站点列表并发送邮件和附件
查看>>
nest(inner) class
查看>>
ftp安装和虚拟用户创建
查看>>
.net中后端接口时间格式处理
查看>>
Ubuntu中Unable to acquire the dpkg frontend lock解决方案
查看>>
Four-tuples(2018山东省赛 F)
查看>>
centos安装oracle客户端
查看>>
blogs
查看>>
Remove Duplicates from Sorted List II
查看>>
Win10《芒果TV》商店版更新v3.2.5:新增会员频道,修复多处细节问题,小年快乐...
查看>>
SpringBoot jar 注册windows服务
查看>>
OC4_NSString操作
查看>>
合并二维数组,并计算重复字段的平均值
查看>>