虽然最好的地方在这里,但我真的不确定在哪里最好问这个问题! 我在Gradle Copy Task上遇到问题,我要解压缩一个zip,然后修改文件路径以删除zip中的根文件夹。建议使用此工作流程,因为Gradle中不提供用于选择zip中的某些子目录的功能: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 ./
即使在Gradle JVM上将umask设置为027(尝试从文件/目录中删除其他权限)甚至都不能停止(这将强制JVM使用UMASK的权限,因为没有设置文件模式)。如果我删除上述任务的eachFile部分,则该文件夹具有正确的权限,但是显然会在创建的apache-tomcat-X文件夹中,而我不想发生该文件夹。
所以我不知道为什么会发生这种情况,希望有更多Gradle经验的人来帮助我。看来问题是路径更改导致使用我的基本UMASK而不是应该使用的UMASK创建文件夹,这似乎是一个错误,但我想在这里进行检查。