【问题标题】:Maintain file permission after gradle unzipgradle解压后保持文件权限
【发布时间】:2016-08-09 21:50:59
【问题描述】:

我有一个简单的 gradle 任务,它解压缩一个 zip 文件并将其复制到本地目录。问题是,执行后,我的所有文件都更改了权限。

这是我的毕业任务:

task unzip(type: Copy) {
    def zipFile = file('src/dists/dist.zip')
    def outputDir = file("${buildDir}/unpacked/dist")

    from zipTree(zipFile)
    into outputDir
}

但在执行“解压缩”任务后,我所有的文件,原来有

rwxr-xr-x

权限变成

rw-r--r--

为什么我的任务会从我的所有文件中剥离执行权限?有没有办法告诉我的 gradle 任务保留文件权限?

【问题讨论】:

    标签: gradle android-gradle-plugin


    【解决方案1】:

    首先,请注意将文件权限存储在 zip 文件 is not trivial 中。您的问题不清楚您是否在 zip 文件中存储了权限。

    我不知道如何告诉 Gradle 维护权限,但是,这可能是可以接受的 (?):Copy 任务 (doc here) 上的 fileMode 参数可用于分配权限。

    例如:

    task unzip(type: Copy) {
        fileMode = 0755 
        def zipFile = file('src/dists/dist.zip')
        def outputDir = file("${buildDir}/unpacked/dist")
    
        from zipTree(zipFile)
        into outputDir
    }
    

    导致以下权限:

    bash$ ls -lrt build/unpacked/dist/
    total 0
    -rwxr-xr-x  [snip] 9 Aug 22:42 run.sh
    -rwxr-xr-x  [snip] 9 Aug 22:42 example1.sh
    -rwxr-xr-x  [snip] 9 Aug 22:42 foobar.txt
    

    【讨论】:

    • 经过大量挖掘,我确实发现 zip 文件很可能没有我期望的权限。很可能是因为它是从 Windows 操作系统压缩的。这个解决方案可以,谢谢!
    猜你喜欢
    • 2016-01-29
    • 2013-07-27
    • 2021-10-20
    • 2011-02-22
    • 1970-01-01
    • 2011-10-21
    • 2020-07-26
    • 2015-07-05
    • 2012-01-04
    相关资源
    最近更新 更多