gpt4 book ai didi

java - Gradle并行执行命令行

转载 作者:行者123 更新时间:2023-12-03 05:55:12 27 4
gpt4 key购买 nike

我们有一个gradle项目,可将cobol编译为Java。这是通过从gradle任务中使用参数(文件名)调用的批处理文件发生的:

def compileSingleFile(String cblFileName) {
exec {
commandLine "${projectDir}/compileFile.bat"
args "${cblFileName}"
ignoreExitValue = true
}
}

当前,我们遍历文件列表,每个文件都一个接一个地编译:
task ciBuild {
dependsOn collectFiles
doLast {
cobolfiles.parallelStream().each {file ->
if(file.toUpperCase().endsWith("CBL")) {
compileSingleFile(file)
}
}
}
}

gradle是否有可能在某种线程池中运行此任务?例如,每个编译另一个文件有10个线程?直到列表为空?

先感谢您!

最佳答案

任务按顺序运行,并且绝对不应被代码显式调用。没有什么可以阻止您在doLast { }中运行project.exec(Closure)

例如:

task ciBuild {
def cobolFiles = fileTree("src/main/cobol").matching {
include "**/*.CBL"
}
dependsOn collectFiles
inputs.files cobolFiles
outputs.dir 'path/to/outputDir'
doLast {
cobolFiles.files.parallelStream().each { File file ->
exec {
commandLine "${projectDir}/compileFile.bat"
args file.absolutePath
ignoreExitValue = true
}
}
}
}

关于java - Gradle并行执行命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45325544/

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