自定义task生成jar包
来源:互联网 发布:联通申请开通80端口 编辑:程序博客网 时间:2024/04/26 06:11
背景:之前转载过别人的在build.gradle中自定义task来打Jar包的文章
文章地址:http://blog.csdn.net/u010479969/article/details/76096162
如果是简单的单一工程需求,这个完全可以满足,但是作为如果想要支撑全公司的业务,这样就有一些麻烦了,如果公司有十个产品线,则需要十个产品线都加入这些代码,感觉还是挺麻烦的
所以想要开发自定义gradle插件,来实现这个功能,接入成本会降低一些.
好久没有写自定义插件了,所以这里记录下来,也是防止以后忘记。
首先记录一下,我们常规开发gradle插件的套路,
1.创建extensions来传递数据
package com.plugin.buildtoolimport org.gradle.api.Project/** * */class ProviderJarPluginExtension { def archiveName = "provider.jar" def srcClassDir = "" ProviderJarPluginExtension(Project project){ archiveName = project.name+".jar" srcClassDir = project.buildDir.absolutePath + "/intermediates/classes/release" }}
project.extensions.create('providerJar', ProviderJarPluginExtension,project)
2.加入task
project.task(ProviderJarTask.NAME,type:ProviderJarTask, dependsOn: 'assembleRelease')
3.创建task
import org.gradle.api.tasks.bundling.Jar/** * */class ProviderJarTask extends Jar { static final String NAME = "providerJar" String archiveName String srcClassDir ProviderJarTask() { group = "hummingbird" description = "" if(archiveName == null){ archiveName = project.providerJar.archiveName } if(srcClassDir == null){ srcClassDir = project.providerJar.srcClassDir } from(srcClassDir) }}
这样就可以完成一个插件话开发
然后
./gradlew providerJar
就会在build/libs/下生成project.name.jar文件,
我们也可以,将jar包移动到我们需要的目录下,
扩展:我们还可以增加过滤等手段来处理我们的jar包
扩展:增加过滤的文件类型,例如,过滤掉某些R.class类型文件
ProviderJarTask() { if(srcClassDir == null){ srcClassDir = project.providerJar.srcClassDir } if(archiveName == null){ archiveName = project.providerJar.archiveName } from(srcClassDir) String packageName = project.android.defaultConfig.applicationId //获取当前工程包名 String p = packageName.replace('.',File.separator); //将包名转化为路径 exclude{ if(!it.path.startsWith(p)){ //当前包名下的R不过滤,其他的R统统删掉 it.name.endsWith('R.class'); } else { return false } } exclude { if(!it.path.startsWith(p)){ it.name.startsWith('R$'); } else { return false } } }
阅读全文
0 0
- 自定义task生成jar包
- Gradle 自定义Task 打Jar包
- Android Studio生成自定义jar包
- Android Studio生成自定义jar包
- 通过maven生成自定义的jar包
- eclipse导入生成自定义jar包并导入
- android studio自定义生成jar包基础篇
- Android Studio生成自定义jar包(同时将assets目录打入jar包)
- jar包生成命令
- 如何生成jar包
- eclipse生成jar包
- jar包生成
- eclipse生成jar包
- myeclipse生成JAR包
- eclipse生成jar包
- eclipse生成jar包
- eclipse生成jar包
- eclipse生成jar包
- The All-purpose Zero||HDU5773
- Python + Statsd + Graphite 搭建监控平台
- quartz在job间隔期间内,保证上一个任务执行完后,再去调度下一个任务
- matlab里纯色图像确定图像光点位置
- idea导入github上的项目
- 自定义task生成jar包
- java 异常
- jmeter jdbc无法通过IP连接到mysql解决方案
- C标准库之零:C标准库概述
- mysql省市区信息表
- 猜字小游戏
- python练习(六)
- B
- Java设计模式——单例模式