通过gradle更改文件权限

dzr*_*kot 6 gradle build.gradle

我创建了.jar文件并将其移至dir,但是我不明白以后如何更改该文件的权限。

task fatJar(type: Jar) {
    manifest {
        attributes 'Implementation-Title': 'Gradle Jar File Example',
                'Implementation-Version': version,
                'Main-Class':'com.asd.App',
                'Class-Path': 'com.asd'
    }
    baseName = project.name + '-all'
    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }
    def file = file('/home/master/project/asd')
    fileMode = 755
    destinationDir = file
    with jar
}
Run Code Online (Sandbox Code Playgroud)

mko*_*bit 6

如果要将其嵌入到现有的自定义任务中,请使用can Project.exec(Action<? super ExecSpec> action)

task changePermission {
  doLast {
    project.exec {
      commandLine('chmod',  '+x', '<fileLocation>')
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

project,因为它来自在大多数任务的实现提供AbstractTask.getProject()


Ayo*_*yan 5

创建一个Exec任务来更改文件权限。将此添加到您的build.gradle文件中

task filepermission(type: Exec) {
    commandLine 'chmod', '700', '<file_path>'
}
Run Code Online (Sandbox Code Playgroud)

使用一个doLast块运行它。您的决赛build.gradle将如下所示:

task filepermission(type: Exec) {
    commandLine 'chmod', '700', '<file_path>'
}

task fatJar(type: Jar) {
    manifest {
        attributes 'Implementation-Title': 'Gradle Jar File Example',
                'Implementation-Version': version,
                'Main-Class':'com.asd.App',
                'Class-Path': 'com.asd'
    }
    baseName = project.name + '-all'
    from {
        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
    }
    def file = file('/home/master/project/asd')
    fileMode = 755
    destinationDir = file
    with jar
    doLast {
        filepermission.execute()
    }
}
Run Code Online (Sandbox Code Playgroud)

现在运行gradle fatJar应更改文件许可权。确保在filePermission任务中设置正确的路径


ddi*_*rov 5

上面的大多数解决方案都是不必要的复杂。发布此信息,以便我下次查找时可以找到它:

distributions {
    main {
        contents {
            from fileTree('src/main/scripts'), {
                filesMatching('myscript') { mode = 0744 }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)