Gradle - Переместить папку из ABC в XYZ

Структура каталогов:

Project1/ABC/file1.txt

Я хочу, чтобы вышеуказанная папка ABC перемещалась/переименовывалась в XYZ (не оставляя там ABC).

Как это сделать, используя Gradle. Похоже на Gradle: для человека правой руки он зудит правым ухом, используя вашу левую руку, беря его поперек головы.

Я использовал следующий пример: но он ничего не делает:

task renABCToXYZ(type: Copy) << {
   copy {
      from "Project1"
      into "Project1"
      include 'ABC'
      rename ('ABC', 'XYZ')
   }
}

Ответ 1

В объявлении вашей задачи неправильно сочетается тип задачи Copy и project.copy, что приводит к задаче, которой нечего копировать и, таким образом, никогда не запускается. Кроме того, Copy не является правильным выбором для переименования каталога. Нет API Gradle для переименования, но бит кода Groovy (используя Java File API). Предполагая, что Project1 - это каталог проекта:

task renABCToXYZ {
    doLast {
        file("ABC").renameTo(file("XYZ"))
    }
}

Если посмотреть на более крупную картинку, лучше добавить логику переименования (т.е. действие задачи doLast) в задачу, которая создает ABC.

Ответ 2

С приведенным выше решением вы можете переименовывать файлы и папки, вы можете перемещать файлы, но вы не можете переместить папки в другой пункт назначения с помощью renameTo. Для этого случая вы должны использовать ant.move:

 ant.move(file: sourceDir, tofile: targetDir)

Примечание. Вопрос заключается в переименовании папок. Поэтому ответ выше правильный (но вопрос немного неоднозначный). Но, может быть, мой ответ полезен для других пользователей, которые наткнулись на этот вопрос и хотят переместить папку.

Ответ 3

Следующий код переместит файл из одного каталога в другой и переименует файл

task wb764Jar( type: Jar ) {
        doFirst{
            copy {
                from 'deployment/alpha/workbench_alpha7_64.jnlp'
                into 'build/libs/jar_merge/developed/alpha64/JNLP-INF/'
                rename('workbench_alpha7_64.jnlp', 'APPLICATION.JNLP')
            }
        }
        baseName = 'WorkbenchMaster7_64'
        from files(wbLibsDir + '/jar_merge/developed/alpha64/')
        from zipTree("$wbJar.archivePath")
    }