可以作为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包的更多相关文章

  1. Gradle 使用本地的Jar包(gradle oracle ojdbc14 )

    Gradle 使用本地的Jar包(gradle oracle ojdbc14 ) 因为Oracle的驱动包在Maven上是没办法直接下载到的,所以在使用Gradle的使用,会导致无法加载Oracle, ...

  2. gradle导出依赖的jar包

    gradle导出依赖的jar包 http://blog.csdn.net/yuhentian/article/details/50426896

  3. 自定义API(Jar包)的创建与使用(简单实现案例)

    @ 目录 学习内容 1. 自定义工具类 2. 导出jar 3. 加载Jar包 4. 调用自定义的API方法 总结 学习内容 1. 自定义工具类 新建一个java项目,然后创建包和工具类StringUt ...

  4. 深入Jar包:Gradle构建可执行jar包与访问jar包中文件夹与文件

    前言 Java的跨平台功能听起来很诱人可口,号称"Write Once,Run Everywhere",实际上是"Run Once,Debug Everywh" ...

  5. 如何解决使用Gradle时出现的jar包冲突

    前言 在我之前使用Gradle的博文中已经提到,Gradle对依赖的管理是比较智能的,如果有两个包依赖于相同的包,而版本不同的时候,Gradle会进行自动的选择,从而避免jar包的冲突. 也就是说,在 ...

  6. Android Gradle 自定义Task 详解

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/76408024 本文出自[赵彦军的博客] 一:Gradle 是什么 Gradle是一 ...

  7. Gradle 打可执行jar包

    初次使用Gradle,想和maven一样,把gradle项目打成可执行jar包,具体步骤: 1.下载gradle 版本,并配置环境变量, 下载地址:https://gradle.org/release ...

  8. Android Studio引用自定义的framework.jar包

    1.在app/libs/目录下添加framework.jar包. 2.打开build->Edit Libraries and Dependencies,把libs/framework.jar放到 ...

  9. 如何使用Gradle的maven-publish将jar包或者war包上传到nexus仓库

    首先,在build.gradle里边声明依赖maven-publish插件: apply plugin: 'maven-publish' 然后,配置项目的信息和和nexus的信息: publishin ...

随机推荐

  1. 51nod1049 最大子段和【动态规划】

    N个整数组成的序列a[1],a[2],a[3],-,a[n],求该序列如a[i]+a[i+1]+-+a[j]的连续子段和的最大值.当所给的整数均为负数时和为0. 例如:-2,11,-4,13,-5,- ...

  2. UID中RUID、EUID和SUID的区别

    看UNIX相关的书时经常能遇到这几个概念,但一直没有好好去理清这几个概念,以致对这几个概念一直一知半解.今天好好区分了一下这几个概念并总结如下.说白了这几个UID引出都是为了系统的权限管理. 下面分别 ...

  3. 关于linux内核用纯c语言编写的思考

    在阅读linux2.6 版本内核的虚拟文件系统和驱动子系统的时候,我发现内核纯用c语言编写其实也是有一点不方便,特别是内核中大量存在了对象的概念,比如说文件对象,描述起来使用对象描述,但是对象在c语言 ...

  4. collections、random、hashlib、configparser、logging模块

    collections模块 在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdict. ...

  5. 30.IK中文分词器的安装和简单使用

    在之前我们学的都是英文,用的也是英文的standard分词器.从这一节开始,学习中文分词器.中国人基本上都是中文应用,很少是英文的,而standard分词器是没有办法对中文进行合理分词的,只是将每个中 ...

  6. 一个电商项目的Web服务化改造2:现有项目的5个问题

         最近一直在做一个电商项目,需要把原有单系统架构的项目,改造成基于服务的架构,SOA.      有点挑战,做完了,会有很大进步, 1.现有项目的问题   1.1代码风格不统一     不同的 ...

  7. android 彩信附件添加删除

    http://blog.csdn.net/yuzhu_guan2012/article/details/6679154

  8. bug的分类和等级

    一.bug的定义 软件的bug,狭义指软件程序的漏洞或缺陷,广义指测试工程师或用户提出的软件可改进的细节.或与需求文档存在差异的功能实现等 对应三个测试目的:(3个为了) 1.为了发现程序的代码或业务 ...

  9. java中redis的分布式锁工具类

    使用方式 try { if(PublicLock.getLock(lockKey)){ //这里写代码逻辑,执行完后需要释放锁 PublicLock.freeLock(lockKey); } } ca ...

  10. springcloud(十一):服务网关Zuul高级篇

    时间过的很快,写springcloud(十):服务网关zuul初级篇还在半年前,现在已经是2018年了,我们继续探讨Zuul更高级的使用方式. 上篇文章主要介绍了Zuul网关使用模式,以及自动转发机制 ...