Подтвердить что ты не робот

Как выполнить JavaExec несколько раз в одной задаче с помощью Gradle?

У меня есть задача, которая запускает простой JavaExec.

Мне кажется, что я не могу работать, это способность запускать JavaExec несколько раз, итерации объекта Filetree (содержащего файлы) каждый из них, пока я хочу переходить в основной класс JavaExec один за другим. К сожалению, компилятор или инструмент генерации кода, поскольку он не принимает каталог как arg, поэтому мне нужно передать файл в виде arg для цикла. Вот что у меня есть:

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 вызывается только один раз в самом последнем файле.

Как я могу обратиться к вышеперечисленному? Пожалуйста, помогите.

4b9b3361

Ответ 1

Как использовать метод project.javaexec? См. Документация по API или DSL ref.

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"]
      }
    }
  }
}