Gradle 任务访问文件的几种方式

例子:

三种方式,使用

1task file{ 2 // relative path 3 File configFile = file('build.gradle') 4 println 'relative path: ' + configFile 5 6 // Using an absolute path 7 configFile = file(configFile.absolutePath) 8 println 'absolute path: ' + configFile.absolutePath + ' = ' + configFile 9 10 // Using a File object with a relative path 11 configFile = file(new File('build.gradle')) 12 println 'file object: ' + configFile 13}

输出:

relative path: C:\temp\quickstart\groovy\build.gradle
absolute path: C:\temp\quickstart\groovy\build.gradle = C:\temp\quickstart\groovy\build.gradle
file object: C:\temp\quickstart\groovy\build.gradle

文件集合的创建方式和使用

1FileCollection collection = files('build.gradle', new File('other.gradle'), ['settings.gradle', '.gradle/6.0/gc.properties']) 2 3 println "collection: " + collection 4 5 collection.each {File file -> 6 println 'file name:' + file.name 7 }

输出:

这个元素为File的文件集合可以转换成其他的Groovy数据结构:

1// Convert the collection to various types 2Set set = collection.files 3Set set2 = collection as Set 4List list = collection as List 5String path = collection.asPath 6File file = collection.singleFile 7File file2 = collection as File 8// 也可以使用代码往集合里添加或者删除元素 9def union = collection + files('src/file3.txt') 10def different = collection - files('src/file3.txt')

文件集合的自定义实现方式

1task file { 2 File srcDir 3 // Create a file collection using a closure 4 FileCollection collection = files { srcDir.listFiles() } 5 srcDir = file('src') 6 println "Contents of $srcDir.name" 7 collection.collect { relativePath(it) }.sort().each { println it } 8 srcDir = file('.gradle') 9 println "Contents of $srcDir.name" 10 collection.collect { relativePath(it) }.sort().each { println it } 11}

输出:

Contents of src
src\main
src\test
Contents of .gradle
.gradle\6.0
.gradle\buildOutputCleanup

文件树

文件树是按层次结构排序的文件集合。例如,文件树可能表示一个目录树或 ZIP 文件的内容。它通过 FileTree 接口表示。FileTree 接口继承自 FileCollection,所以你可以用对待文件集合一样的方式来对待文件树。Gradle 中的几个对象都实现了 FileTree 接口,例如 source sets。

测试:

1task file { 2 FileTree tree = fileTree(dir: 'src/main') 3 tree.each { 4 File file -> println file.name 5 } 6 7 FileTree tree2 = fileTree(dir: '.gradle') 8 List list = tree2 as List 9 10 list.each({ 11 println it 12 }) 13} 14

输出:

Person.java
resource.xml
C:\temp\quickstart\groovy.gradle\6.0\executionHistory\executionHistory.bin
C:\temp\quickstart\groovy.gradle\6.0\executionHistory\executionHistory.lock
C:\temp\quickstart\groovy.gradle\6.0\fileChanges\last-build.bin
C:\temp\quickstart\groovy.gradle\6.0\fileHashes\fileHashes.bin
C:\temp\quickstart\groovy.gradle\6.0\fileHashes\fileHashes.lock
C:\temp\quickstart\groovy.gradle\6.0\gc.properties
C:\temp\quickstart\groovy.gradle\buildOutputCleanup\buildOutputCleanup.lock
C:\temp\quickstart\groovy.gradle\buildOutputCleanup\cache.properties
C:\temp\quickstart\groovy.gradle\buildOutputCleanup\outputFiles.bin

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

本文分享 CSDN - 汪子熙。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

一篇文章带你了解JavaScript日期

日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用