如何使用Gradle在单个任务中多次执行JavaExec?
我有一个运行简单JavaExec的任务 我似乎无法工作的是,在迭代Filetree对象(包含文件)的同时多次运行JavaExec的能力,而我希望逐个传递到主JavaExec类。不幸的是,编译器或代码生成工具不接受作为arg的目录,因此我需要以每个循环的arg形式传递该文件。以下是我所拥有的:如何使用Gradle在单个任务中多次执行JavaExec?,gradle,Gradle,我有一个运行简单JavaExec的任务 我似乎无法工作的是,在迭代Filetree对象(包含文件)的同时多次运行JavaExec的能力,而我希望逐个传递到主JavaExec类。不幸的是,编译器或代码生成工具不接受作为arg的目录,因此我需要以每个循环的arg形式传递该文件。以下是我所拥有的: task generateClasses(type: JavaExec) { description = 'Generates Json Classes...' classpath config
task generateClasses(type: JavaExec) {
description = 'Generates Json Classes...'
classpath configurations.all
main = "org.apache.gora.compiler.Compiler"
FileTree tree = fileTree(dir: 'src/main')
tree.include '**/*.json'
tree.each {File file ->
println file
args = [ "src/main/json/$file.name", "$buildDir/generated-src/src/main/java" ]
}
}
compileJava.source generateClasses.outputs.files,sourceset.main.java
从上面可以看出,它是有效的,我列出了所有文件,但JavaExec在最后一次读取文件时只被调用一次
我如何解决上述问题?请帮助。使用
project.javaexec
方法如何?看到了吗
显然,将上述内容分解为单独的任务并运行JavaExec n次将是一个解决方案,但这会使构建文件过于冗长且不灵活(我必须指定每个文件的路径)。
task generateClasses {
description = 'Generate Json Classes'
fileTree(dir: 'src/main', include:'**/*.json').each { file ->
doLast {
javaexec {
classpath configurations.all
main = 'org.apache.gora.compiler.Compiler'
args = ["src/main/json/$file.name", "$buildDir/generated-src/src/main/java"]
}
}
}
}