You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Gradle中‘setter for fileMode: Int?’已过时警告?

修复Gradle Copy任务中fileMode弃用警告并设置可执行权限

Gradle新版本中fileMode的setter已被弃用,推荐使用基于权限集合的API来设置文件权限,以下是几种可行的修复方案:

方案一:使用filePermissions(跨平台兼容)

直接通过filePermissions属性设置完整权限,替代原有的fileMode:

tasks {
    register("installLocalPostCommitGitHook", Copy::class) {
        from(File(rootProject.rootDir, "scripts/post-commit"))
        into(File(rootProject.rootDir, ".git/hooks"))
        // 设置权限为rwxr-xr-x(对应原0b111101101即755)
        filePermissions = org.gradle.api.file.FilePermissions.DEFAULT_FILE.copy(
            ownerRead = true,
            ownerWrite = true,
            ownerExecute = true,
            groupRead = true,
            groupExecute = true,
            othersRead = true,
            othersExecute = true
        )
    }
}

方案二:使用Posix文件权限(类Unix系统专用)

如果你的开发环境是类Unix系统(Linux/macOS),可以直接用标准的Posix权限枚举来设置:

import java.nio.file.attribute.PosixFilePermission
import java.util.EnumSet

tasks {
    register("installLocalPostCommitGitHook", Copy::class) {
        from(File(rootProject.rootDir, "scripts/post-commit"))
        into(File(rootProject.rootDir, ".git/hooks"))
        // 明确设置rwxr-xr-x权限,确保Git钩子可执行
        posixFilePermissions = EnumSet.of(
            PosixFilePermission.OWNER_READ,
            PosixFilePermission.OWNER_WRITE,
            PosixFilePermission.OWNER_EXECUTE,
            PosixFilePermission.GROUP_READ,
            PosixFilePermission.GROUP_EXECUTE,
            PosixFilePermission.OTHERS_READ,
            PosixFilePermission.OTHERS_EXECUTE
        )
    }
}

方案三:通过eachFile批量设置

如果需要对复制的多个文件统一设置权限,可以用eachFile回调:

tasks {
    register("installLocalPostCommitGitHook", Copy::class) {
        from(File(rootProject.rootDir, "scripts/post-commit"))
        into(File(rootProject.rootDir, ".git/hooks"))
        
        eachFile {
            // 在原有默认权限基础上添加可执行权限
            filePermissions = filePermissions.copy(
                ownerExecute = true,
                groupExecute = true,
                othersExecute = true
            )
        }
    }
}

以上三种方案都能解决fileMode弃用警告,同时确保Git钩子文件拥有可执行权限,根据你的运行环境选择即可。

内容的提问来源于stack exchange,提问作者JBokMan95

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 17:52:34