20

単純なJavaExecを実行するタスクがあります。

私がうまくいかないように見えるのは、メインのJavaExecクラスに1つずつ渡したいときに、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は、最後に読み取られたファイルで1回だけ呼び出されます。

上記に対処するにはどうすればよいですか?助けてください。

4

1 に答える 1

34

この方法を使ってproject.javaexecみませんか?APIドキュメントまたは DSLリファレンスを参照してください。

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"]
      }
    }
  }
}
于 2012-11-21T13:34:17.473 に答える