Не был уверен, где лучше спросить об этом, хотя лучшее место было здесь!У меня есть проблема с задачей Gradle Copy, когда я распаковываю zip, а затем изменяю пути к файлам, чтобы удалить корневую папку в zip.Это был рекомендуемый рабочий процесс, поскольку функция выбора определенных подкаталогов в zip-файле недоступна в Gradle: https://github.com/gradle/gradle/issues/1108
Так что вот моя проблема, это моя задача Gradle:
task unpackTomcat( type: Copy ) {
from zipTree( "/Users/x/Downloads/tomcat-X.zip" )
into "/app/tomcat"
fileMode 0660
dirMode 0750
includeEmptyDirs = false
eachFile { details ->
def path = details.path
details.path = path.substring( path.indexOf( '/' ) + 1 )
}
}
Это распакует zip и переместит все файлы из папки apache-tomcat-X и поместит их в мою базовую папку.IE удалить первую часть пути.Однако, когда это происходит, разрешения для папок неверны:
drwxr-xr-x 3 X X 102B Oct 12 13:58 temp/
drwxr-xr-x 27 X X 918B Oct 12 13:58 lib/
drwxr-xr-x 12 X X 408B Oct 12 13:58 conf/
drwxr-xr-x 25 X X 850B Oct 12 13:58 bin/
-rw-rw---- 1 X X 1.7K Oct 12 13:58 NOTICE
-rw-rw---- 1 X X 57K Oct 12 13:58 LICENSE
drwxr-x--- 3 X X 102B Oct 12 13:58 ../
drwxr-x--- 8 X X 272B Oct 12 13:58 ./
Даже установка umask на 027 (попытка удалить другие разрешения из файлов / каталога) в JVM Gradle даже не останавливает это(Это должно вынудить JVM использовать разрешения UMASK, если не задан файловый режим. Если я удалю часть eachFile вышеупомянутой задачи, у папок будут правильные разрешения, но, очевидно, они будут в папке apache-tomcat-X, которая получаетсозданный, которого я не хочу иметь в виду.
Так что я в растерянности относительно того, почему это происходит, и хотел бы, чтобы люди, более опытные с Gradle, помогли мне здесь. Похоже, проблема заключается в том путиизменение вызывает создание папок с моей базовой UMASK вместо UMASK, которая должна использоваться, и это похоже на ошибку, но я решил проверить здесь.