How to execute JavaExec multiple times in a single task using Gradle?
我有一个运行简单JavaExec的任务。
我似乎无法正常工作的是能够多次运行JavaExec的能力,同时每次都想一次传递到主要JavaExec类的同时迭代Filetree对象(包含文件)的过程。 不幸的是,编译器或代码生成工具本身不接受目录作为arg,因此我需要在每个循环中将文件作为arg传递。 这是我所拥有的:
1 2 3 4 5 6 7 8 9 10 | 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,sourceSets.main.java
从上面可以正常工作,我列出了所有文件,但是JavaExec仅在读取的最后一个文件中被调用一次。
我该如何解决? 请帮忙。
使用
DSL参考
1 2 3 4 5 6 7 8 9 10 11 12 | 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"] } } } } |