Gradle教程系列 —— 文件操作

几乎每个构建都涉及到文件的操作。因此,为了方便文件操作,Gradle专门设计了操作文件的API。

这些API包含两部分:

  • 指定要处理的文件和目录
  • 指定要如何处理文件和目录

拷贝文件(Copy)

将特定文件拷贝到指定目录。

task copyCache(type:Copy){
    from file("${buildDir}/cache/hello.txt")
    into file("${buildDir}/log")
}

Project.file()方法是用于创建当前项目下的一个文件或者目录。

我们也可以不使用file()方法,直接使用路径。

task copyCache2(type:Copy){
    from "${buildDir}/cache/hello.txt"
    into "${buildDir}/log2"
}

当然,我们也可以同时拷贝多个文件到指定目录。

task copyFiles(type:Copy){
    from "${buildDir}/cache/hello.txt", "${buildDir}/generated/1.txt"
    into "${buildDir}/log3"
}

现在考虑另外一种情况,我们需要拷贝指定目录下的pdf格式的文件。

task copyPdfReportsForArchiving(type: Copy) {
    from "${buildDir}/reports"
    include "*.pdf"
    into "${buildDir}/toArchive"
}
copy-with-flat-filter-example.png

我们也可以拷贝reports目录以及它的子目录下的pdf文件。

task copyAllPdfReportsForArchiving(type: Copy) {
    from "${buildDir}/reports"
    include "**/*.pdf"
    into "${buildDir}/toArchive"
}
copy-with-deep-filter-example.png

创建归档文件(zip,tar等)

Gradle 提供了Zip,Tar,Jar等任务,可以将文件打包成.zip,.tar或者.jar格式的文件。

例如,我们可以将${buildDir}/toArchive目录下的文件,打包成${buildDir}/dist目录的my-distribution.zip文件

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

    from "${buildDir}/toArchive"
}

打开档案文件

Project.zipTree和Project.tarTree方法可以从相应的归档文件生成FileTree。FileTree可以用在from方法中。如下所示。

task unpackFiles(type: Copy) {
    from zipTree("${buildDir}/dist/my-distribution.zip")
    into "${buildDir}/resources"
}

创建目录

我们可以使用Project.mkdir方法创建目录。

task ensureDirectory {
    doLast {
        mkdir "images"
    }
}

移动文件或目录

Gradle并没有提供移动文件或者目录的方法。不过我们可以使用ant的方法。

task moveReports {
    doLast {
        ant.move file: "${buildDir}/reports",
                 todir: "${buildDir}/toArchive"
    }
}

删除文件和目录

在Gradle中,可以使用Delete任务或者Project.delete方法删除文件或者目录。

删除目录

task myClean(type: Delete) {
    delete buildDir
}

如果想要控制删除哪些文件,我们可以使用FileCollection和FileTree。

删除源文件夹下的临时文件

task cleanTempFiles(type: Delete) {
    delete fileTree("src").matching {
        include "**/*.tmp"
    }
}

总结

本文主要讲述了,Gradle中常用的一些文件操作。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Ubuntu的发音 Ubuntu,源于非洲祖鲁人和科萨人的语言,发作 oo-boon-too 的音。了解发音是有意...
    萤火虫de梦阅读 100,842评论 9 468
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,711评论 19 139
  • 第五章 正面对决 “什么?”若萧抓住了李泽海,问:“你说什么?他们出事了?怎么回事?” ...
    烟酒味阅读 846评论 0 1
  • 文/蓝橙 2016年2月我收到一大包棉花糖,里面有张小小的纸条——来自2014年的棉花糖!没有署名。 我打开一个,...
    蓝橙LC阅读 1,160评论 15 61

友情链接更多精彩内容