Gradle 自定义Task 打Jar包

Posted 星辰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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/AppsName.jar 
    from( build/intermediates/bundles/release )  
    into( build/libs)  
    include(classes.jar)  
    rename(classes.jar, AppsName.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/AppsName.jar    baseName AppsName    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/AppsName.jar    baseName AppsName    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 包

spring boot使用gradle打包怎么样排除指定jar包

Android Studio中gradle命令指定打jar包...

Android Gradle 插件自定义 Gradle 任务 ④ ( Task#doLast 函数用法 | 自定义 Gradle 任务代码示例 )

Android Gradle 插件自定义 Gradle 任务 ④ ( Task#doLast 函数用法 | 自定义 Gradle 任务代码示例 )

idea gradle工程怎么打jar包