Android 迭代执行任务

Android 迭代执行任务,android,groovy,gradle,Android,Groovy,Gradle,在下面提供的代码中,我可以打印目录中的每个文件名,但当它到达Exec命令时,它只对最后一个文件执行Exec task frmf2xml(type:Exec) { new File('src/orca/').eachFile {file -> if(file.name.endsWith(".fmb")){ println file commandLine 'cmd', '/c', 'frmf2xml.bat', fil

在下面提供的代码中,我可以打印目录中的每个文件名,但当它到达Exec命令时,它只对最后一个文件执行Exec

task frmf2xml(type:Exec)  {
    new File('src/orca/').eachFile {file ->
        if(file.name.endsWith(".fmb")){
            println file
            commandLine 'cmd', '/c', 'frmf2xml.bat', file, 'OVERWRITE=YES'
        }
   }
}

我希望它在每个文件上运行该工具

实际上,我找到了一个解决方案,使用


你从这个链接复制了问题和代码,为什么@chrki LOL是的,当然是在寻找解决方案。顺便说一句,你在@chrki上链接了这段代码,我需要知道它是否可以解决,并给了你奖励,顺便说一句:链接中提供的解决方案不起作用。至少,你必须用
doLast:
任务frmf2xml{doLast{…}
包装整个任务体。否则,命令将在每次Gradle调用时(无论调用哪个任务)以及在任何任务运行之前(配置与执行阶段)执行。与Groovy的
String#execute
不同,使用Gradle的
project.exec{…}
更为惯用。
task frmf2xml()  {
    new File('src/orca/').eachFile {file ->
        if(file.name.endsWith(".fmb")){                
            def cmd = "cmd /c frmf2xml.bat ${file} OVERWRITE=YES"
            def result = cmd.execute();
            result.waitFor();
        }
   }
}