• 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之后。

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

  • 相关阅读:
    第四章 网络层协议介绍
    第三章 交换机基本原理与配置
    网络服务综合性测试
    双向秘钥对验证
    DNS分离解析与构建智能DNS服务器
    NFS共享服务
    部署YUM仓库服务
    PXE高效能批量网络装机
    DNS综合实验
    构建DNS主 从服务器
  • 原文地址:https://www.cnblogs.com/zhujiabin/p/7611168.html
Copyright © 2020-2023  润新知