Android开发经验谈Android技术知识Android开发

Gradle 常用工具脚本

2019-11-05  本文已影响0人  HWilliamgo

基于gradle 4.6

本文记录一些常用的gradle工具脚本的写法,基于gradle4.6,不同版本的gradle应对照官方文档不同版本的DSL Reference参考对应的api的接口的使用。

1. clean整个项目

有的时候有一些操作需要对root project和其下面所有的child project进行一个clean,那么可以参考如下的脚本实现:

//该task定义在root Project下。
task cleanAllProject(){
    it.dependsOn("clean")
    rootProject.subprojects{sub->
        sub.afterEvaluate {
            def cleanTask = it.tasks.findByName('clean')
            if (cleanTask != null) {
                dependsOn(cleanTask)
            }
        }
    }
    it.finalizedBy("<task that follow this full clean>")
}

2. copy某个目录,或文件

copy某个是比较简单的,这里例举copy某个目录,并排除掉指定的子目录。

//copy当前整个项目到buid目录下
task copyDir(){
    doLast{
        copy{
            from rootProject.projectDir
            //destination路径是build/project,用$buildDir指定build路径
            into "$buildDir/project"
            
            //exclude排除指定的目录:/.gradle、 /.idea 、/.git
            exclude "**/.gradle/**"
            exclude "**/.idea/**"
            exclude "**/.git/**"
        }
    }
    it.finalizedBy("<task that follow this full clean>")
}

注意,根据文档,exclude( )方法的参数是一个ANT style exclude pattern,这是一种有语法的表达式。

thanks:

StackOverFlow : Learning Ant path style

StackOverFlow : Cannot exclude directories for a Gradle copy task

3. zip,生成压缩文件

实现这个操作我算是踩了一个小坑了。

我先去官网user mannel home的输入框搜索zip,并选择了

Creating archives(zip, tar, etc.)这一节内容:

https://docs.gradle.org/current/userguide/working_with_files.html#sec:creating_archives_example

他的示例代码是:

task packageDistribution(type: Zip) {
    archiveFileName = "my-distribution.zip"
    destinationDirectory = file("$buildDir/dist")

    from "$buildDir/toArchive"
}

我拿去用的时候报错了,说是找不到属性archiveFileName,然后是我本地的gradle版本落后于官网的版本了。我本地的版本是4.6,而官网的教程是基于5.6.4的。于是我去查找了4.6的教程和DSL说明,4.6的版本的使用方法是:

task makeZip(type: Zip) {
    from "/要压缩的目录"
    archiveName = "压缩包名字.zip"
    //指定生成压缩包的路径,要用file类型
    File destinationFile = new File("$buildDir/zipProduction")
    destinationDir = destinationFile
}

4. 更新中。。。

上一篇下一篇

猜你喜欢

热点阅读