Gradle 自定义Task 打Jar包

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

1: build/intermediates/bundles/release/ 下的classes.jar

2: 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之后。

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

时间: 2025-01-12 22:16:09

Gradle 自定义Task 打Jar包的相关文章

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

因为Oracle的驱动包在Maven上是没办法直接下载到的,所以在使用Gradle的使用,会导致无法加载Oracle,现提供一种Gradle加载本地jar包的方法, 1.先讲所需要的jar包到本地, 2.在项目底下添加lib目录,将jar包仍进lib目录 3.build.gradle配置如下: dependencies { compile files('lib/ojdbc-14.jar')}

【动态页面】(三)之二:通过自定义注解读取Jar包的类名和属性名

上篇博客介绍了通过反射读取Jar包的类名和属性名,但是问题是读不出类名和属性名的中文注释和属性类型.所以上篇博客埋下了一个伏笔,就是通过自定义注解的方式读取Jar包的类名.属性名.中文注释和属性类型.这篇博客我们就来好好讲讲是如何实现的. 首先先说一下,由于我们的Jar包没有放到项目下,所以就想着怎么能把Jar包添加进来,所以先做了一个类似于上传文件的功能,将Jar上传进来,然后再读取Jar包里面的类名.属性名等一系列属性,再添加到数据库中.总体的思路确定了,下面就开始实施. 首先是上传Jar包

gradle导出依赖的jar包

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

Gradle构建可执行Jar包(转载请注明出处)

最近开始接触Java,认识到一个似乎比Maven好用的构建工具Gradle,还来不及细细研究,但是需要构建一个可执行Jar包.上网查了一下.中文的文章千篇一律的提到一个插件apply plugin: 'executable-jar' (https://github.com/stigkj/gradle-executable-jar-plugin) ,也不知道是谁复制了谁的. 但是构建的时候不认这个插件,所以寻找其他方法. 用压缩软件打开Eclipse生成的可执行Jar包与Gradle构建的Jar包

Gradle 引入本地定制 jar 包

第 1 步:创建文件夹,拷贝 jar 包 在自己的 Gradle 项目里建立一个名为 "libs" (这个名字可以自己定义,不一定非要叫这个名字)的文件夹,把自己本地的 jar 包拷贝到这个文件夹中.  第 2 步:编写 build.gradle 核心配置文件片段 在 Gradle 的核心配置文件 build.gradle 中添加如下代码片段: compile fileTree(dir:'libs',include:['*.jar']) 第 3 步:刷新构建 点击刷新 Gradle 项

Gradle加载本地jar包

有时,我们需要的jar包不一定能在远程仓库中找到,这时我们需要加载本地的jar包. 加载单独的jar包 在项目底下添加libs目录,将jar包仍进libs目录 build.gradle配置如下: dependencies { compile files('lib/ojdbc-14.jar')} 加载某个目录的jar包 在自己的 Gradle 项目里建立一个名为 libs (这个名字可以自己定义,不一定非要叫这个名字)的文件夹,把自己本地的 jar 包拷贝到这个文件夹中. build.gradle

Android Gradle 自定义Task 详解

转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/76408024 本文出自[赵彦军的博客] 一:Gradle 是什么 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具. 它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置.面向Java应用为主. 当前其支持的语言限于Java.Groovy.Kotlin和Scala,计划未来将支持更多的语言.基

Gradle 打可执行jar包

初次使用Gradle,想和maven一样,把gradle项目打成可执行jar包,具体步骤: 1.下载gradle 版本,并配置环境变量, 下载地址:https://gradle.org/releases/ 再cmd下能执行gradle命令 2.idea 中新建一个gradle项目 3.build.gradle文件配置如下: apply plugin:'java' apply plugin:'application' jar{ manifestContentCharset 'utf-8' meta

gradle 将依赖打入Jar包的方法

使用的是IDEA,直接引入 plugins { id 'com.github.johnrengelman.shadow' version '1.2.3' } 放在build.gradle的最上面,然后执行shadowJar即可. 网上说有一种方法 jar { manifest { attributes "Main-Class": "$mainClassName" } from { configurations.compile.collect { it.isDirec