Скопируйте последнюю папку Gradle - PullRequest
0 голосов
/ 15 декабря 2018

Я пытаюсь скопировать самую последнюю папку из insde, используя gradle, но я сортирую все папки и копирую файлы внутри самой последней папки.

Ниже приведен скрипт.

task test(type: Copy) {
   from(new Source("D:\\test").listFiles().sort{ it.lastModified() }.last())
   into(new Source("D:\\folder\\output"))
}

В тестовой директории я получаю

test
└──folder1
|      test1.txt
└──folder2
|      test2.txt

Если, скажем, папка 2 в тестовой директории является последней, я получаю вывод как

test2.txt

НоЯ ожидаю вывод в виде

folder2
 └─ test2.txt

и содержимого внутри него.

Может кто-нибудь помочь, пожалуйста?

1 Ответ

0 голосов
/ 15 декабря 2018

Это должно работать:

task testCopy(type: Copy) {
    def latestDirName = file("test").listFiles().sort{ it.lastModified() }.last().name
    from file("test") , {
        include "$latestDirName/"
    }
    into(file("folder/output"))
}

Объяснение

В текущей реализации задачи вы написали:

from(new Source("D:\\test").listFiles().sort{ it.lastModified() }.last())

Что эквивалентно (при условии, что папка folder1 является самой последней):

from(new Source("D:\\test\\folder1"))

Gradle будет использовать d:/test/folder1 в качестве исходной папкидля копии: содержимое этой папки (, но не сама папка ) будет скопировано в целевой каталог.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...