Gradle 自定义Task 打Jar包
可以作为Jar包内容的有两个地方:
: build/intermediates/bundles/release/ 下的classes.jar : 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之后。
以上就是下午看了一会,更多的也是借鉴其他人的一些经验,写出来的一点点心得等。如有不足和雷同,请不吝指出,感谢~
Gradle 自定义Task 打Jar包的更多相关文章
- Gradle 使用本地的Jar包(gradle oracle ojdbc14 )
Gradle 使用本地的Jar包(gradle oracle ojdbc14 ) 因为Oracle的驱动包在Maven上是没办法直接下载到的,所以在使用Gradle的使用,会导致无法加载Oracle, ...
- gradle导出依赖的jar包
gradle导出依赖的jar包 http://blog.csdn.net/yuhentian/article/details/50426896
- 自定义API(Jar包)的创建与使用(简单实现案例)
@ 目录 学习内容 1. 自定义工具类 2. 导出jar 3. 加载Jar包 4. 调用自定义的API方法 总结 学习内容 1. 自定义工具类 新建一个java项目,然后创建包和工具类StringUt ...
- 深入Jar包:Gradle构建可执行jar包与访问jar包中文件夹与文件
前言 Java的跨平台功能听起来很诱人可口,号称"Write Once,Run Everywhere",实际上是"Run Once,Debug Everywh" ...
- 如何解决使用Gradle时出现的jar包冲突
前言 在我之前使用Gradle的博文中已经提到,Gradle对依赖的管理是比较智能的,如果有两个包依赖于相同的包,而版本不同的时候,Gradle会进行自动的选择,从而避免jar包的冲突. 也就是说,在 ...
- Android Gradle 自定义Task 详解
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/76408024 本文出自[赵彦军的博客] 一:Gradle 是什么 Gradle是一 ...
- Gradle 打可执行jar包
初次使用Gradle,想和maven一样,把gradle项目打成可执行jar包,具体步骤: 1.下载gradle 版本,并配置环境变量, 下载地址:https://gradle.org/release ...
- Android Studio引用自定义的framework.jar包
1.在app/libs/目录下添加framework.jar包. 2.打开build->Edit Libraries and Dependencies,把libs/framework.jar放到 ...
- 如何使用Gradle的maven-publish将jar包或者war包上传到nexus仓库
首先,在build.gradle里边声明依赖maven-publish插件: apply plugin: 'maven-publish' 然后,配置项目的信息和和nexus的信息: publishin ...
随机推荐
- 不抛异常的swap函数
namespace AStuff{ template<typename T> class A { public: void swap(A *other) { using std::swap ...
- 洛谷 1486 郁闷的出纳员【Treap】
[题意概述] 要求维护一个序列支持以下操作: 1,插入元素x: 2,把序列的所有元素加上x: 3,把序列的所有元素减去x,同时低于一个给定的下限的元素马上被删除: 4,询问序列中第k大的元素. [题解 ...
- PAT 1106 Lowest Price in Supply Chain
A supply chain is a network of retailers(零售商), distributors(经销商), and suppliers(供应商)-- everyone invo ...
- mybatis源码阅读-MappedStatement各个属性解析过程(八)
调用方 类org.apache.ibatis.builder.xml.XMLMapperBuilder private void configurationElement(XNode context) ...
- [bzoj3224]普通平衡树[Treap]
Treap 的各种操作,模板题,要再写几遍 #include <iostream> #include <algorithm> #include <cstdio> # ...
- Spring MVC-表单(Form)标签-单选按钮(RadioButton)示例(转载实践)
以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_radiobutton.htm 说明:示例基于Spring MVC 4.1.6. ...
- CSUOJ 1329 一行盒子(数组模拟链表)
题目:id=1329">http://acm.csu.edu.cn/OnlineJudge/problem.php? id=1329 题意: watermark/2/text/aHR0 ...
- IntelliJ IDEA中出现could not auto wired错误提示处理方式
IntelliJ IDEA中出现could not auto wired错误提示处理方式 程序可以正常运行,就是出现错误提示: 学习了:http://blog.csdn.net/xlxxybz1314 ...
- IntelliJ IDEA 给表达式赋变量名称
IntelliJ IDEA 给表达式赋变量名称 学习了:http://blog.csdn.net/tiny__wang/article/details/52988790 类似于Eclipse中的ctr ...
- 【Anroid界面实现】WindowManager类使用具体解释——用户首次打开APP的使用教学蒙板效果实现
转载请注明出处:http://blog.csdn.net/zhaokaiqiang1992 在上一篇的文章中,我们介绍了怎样实现桌面悬浮窗体,在这个效果的实现过程中.最重要的一个类就是WindowMa ...