我试图chmod + w整个目录。我需要对其进行修改,并且它应该是只读的,因为它由perforce配置管理系统管理。
我的代码似乎运行正常:
gen text = "replace A = " + string(_n) + " if inrange(A, " + string(A) + "," + string(B) + ")"
打印路径是正确的,但只有最后一次迭代实际上是chmoded。我尝试将commandLine移到println上面,以为我会尝试使用鸟枪调试,但无济于事。
我尝试的另一种方法是使用
运行一次commandLineString path = projectDir.toString() + '/src/main/java/com/<snip>'
task chmod(type:Exec) {
println("chmoding all in $path")
FileTree javaFiles = fileTree(path)
javaFiles.each { File javaFile ->
String filename = path + "/" + javaFile.name
commandLine 'chmod', 'a+w', filename
println "Chmoding $filename"
}
}
但它也失败了。
答案 0 :(得分:2)
Exec
任务执行一次,而不是多次。您在配置阶段多次呼叫Exec.setCommandLine(...)
。当Exec任务执行时(在执行阶段),它只执行最后一个任务。
您可能希望多次致电Project.exec(...)
。
例如:
ext {
path = 'src/main/java/com/<snip>'
}
task chmod {
inputs.dir path
doLast {
fileTree(path).each { File javaFile ->
exec {
println "Chmoding $javaFile"
commandLine 'chmod', 'a+w', javaFile.absolutePath
}
}
}
}
答案 1 :(得分:1)
如果您想通过一个命令执行此操作,请尝试
commandLine 'bash', 'chmod', '-R', 'a+w', '/src/main/java/com/<snip>'