我创建.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
}
答案 0 :(得分:4)
创建Exec
任务以更改文件权限。将其添加到build.gradle
文件
task filepermission(type: Exec) {
commandLine 'chmod', '700', '<file_path>'
}
使用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()
}
}
现在运行gradle fatJar
应该更改文件权限。确保在filePermission
任务
答案 1 :(得分:4)
如果要将其嵌入现有的自定义任务中,可以使用Project.exec(Action<? super ExecSpec> action)
。
task changePermission {
doLast {
project.exec {
commandLine('chmod', '+x', '<fileLocation>')
}
}
}
project
在大多数任务实施中都可用,因为它来自AbstractTask.getProject()
。
答案 2 :(得分:1)
上面的大多数解决方案都是不必要的。 发布此内容,以便下次查找时可以找到它:
distributions {
main {
contents {
from fileTree('src/main/scripts'), {
filesMatching('myscript') { mode = 0744 }
}
}
}
}
答案 3 :(得分:1)
看看这里的解决方案,它们仅适用于 Linux 和 MacOS 等 Unix 风格的操作系统。对于 Windows,Exec
文件中的 gradle.kts
任务如下所示:
tasks {
register<Exec>("makeFileExecutable") {
workingDir(rootDir)
commandLine("cmd", "755", "path/to/folderorfile")
}
}
这对我有用。