gpt4 book ai didi

shell - 如何为 Gradle 文件集合中的每个文件执行 shell 命令?

转载 作者:行者123 更新时间:2023-12-04 05:48:15 26 4
gpt4 key购买 nike

我最近被指示在 Gradle 中实现所有构建/发布工程工作。

所以我是 Gradle 的新手,一些在 shell 提示符下显而易见的东西在这个美丽的新世界中很难理解。

我的构建创建了一组 jar 文件。

我需要为他们每个人执行一个shell任务

类似于:

task findBugs (type:Exec, dependsOn:  fb23) {commandLine 'java', '-jar',
'./findBugs/findbugs.jar', '-textui', '-progress', '-xml', '-output',
'TrustManagerService.xml', 'TrustManagerService.jar'}

(我无法使用 FindBugs 插件,因为我们在 JDK8 中 - 所以我从预览版外部运行 FindBugs...)

我可以获得一个文件集合并使用类似以下内容遍历文件名:

FileTree iotTree = fileTree(dir: '.')
iotTree.include '*.jar'
iotTree.each {
File file -> println file.name
println 'A file'
}

def iotJars = files(file('./jars').listFiles())
println ''
println iotJars
iotJars.each { File file -> println 'The next file is: ' + file.name }

但对于我来说,我看不出如何为返回的每个文件名执行 shell 命令...

关于最直接的方法的想法??

顺便说一句 - 在代码列表中包含换行符的最佳方式是什么 - 我必须返回并向每一行添加 CR 以让它们换行...:(

最佳答案

您可以在 String 上使用 execute 方法来执行 shell 命令。

这是一个示例任务:

task executeExample << {
FileTree ioTree = fileTree(dir: ".")
ioTree.each { f ->
def proc = "ls -l ${f}".execute();
proc.waitFor();
println "return code: ${ proc.exitValue()}"
println "stderr: ${proc.err.text}"
println "stdout: ${proc.in.text}"
}
}

关于shell - 如何为 Gradle 文件集合中的每个文件执行 shell 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22057259/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com