Is FileTree.matching() broken in Gradle 1.8?


(René Scheibe) #1

In Gradle 1.7 it’s fine. In Gradle 1.8 also the directory for a matching file is returned and even the base directory for non matching files are returned.

build.gradle:

task filterTest(type: Copy) {
    ['mkdir -p dir1/dir2/',
     'touch dir1/dir2/file',
     'zip -r dir1.zip dir1/',
     'tar -cf dir1.tar dir1/'].each{ it.execute() }
      into(buildDir)
    from(fileTree(dir: 'dir1').matching{ include 'dir2/file' })
  { eachFile { println "### dir - matching ### $it" } }
    from(zipTree('dir1.zip').matching{ include 'dir1/dir2/file' }) { eachFile { println "### zip - matching ### $it" } }
    from(tarTree('dir1.tar').matching{ include 'dir1/dir2/file' }) { eachFile { println "### tar - matching ### $it" } }
      from(fileTree(dir: 'dirx').matching{ include 'xxxx/file' })
  { eachFile { println "### dir - not matching ### $it" } }
    from(zipTree('dir1.zip').matching{ include 'dir1/xxxx/file' }) { eachFile { println "### zip - not matching ### $it" } }
    from(tarTree('dir1.tar').matching{ include 'dir1/xxxx/file' }) { eachFile { println "### tar - not matching ### $it" } }
}

Gradle 1.7 output:

$ gvm use gradle 1.7
$ rm -rf build
$ gradle filterTest
:filterTest
### dir - matching ### file 'project/dir1/dir2/file'
### zip - matching ### zip entry project/dir1.zip!dir1/dir2/file
### tar - matching ### tar entry project/dir1.tar!dir1/dir2/file

Gradle 1.8 output:

$ gvm use gradle 1.8
$ rm -rf build
$ gradle filterTest
:filterTest
### dir - matching ### file 'project/dir1/dir2'
### dir - matching ### file 'project/dir1/dir2/file'
### zip - matching ### zip entry project/dir1.zip!dir1/
### zip - matching ### zip entry project/dir1.zip!dir1/dir2/
### zip - matching ### zip entry project/dir1.zip!dir1/dir2/file
### tar - matching ### tar entry project/dir1.tar!dir1/
### tar - matching ### tar entry project/dir1.tar!dir1/dir2/
### tar - matching ### tar entry project/dir1.tar!dir1/dir2/file
### zip - not matching ### zip entry project/dir1.zip!dir1/
### tar - not matching ### tar entry project/dir1.tar!dir1/

(Peter Niederwieser) #2

Looks like it. Raised GRADLE-2900.