Разбейте муравейник на параллель с Gradle - PullRequest
0 голосов
/ 25 марта 2019

Я пытаюсь разбить задачу муравья на параллельные задачи.Например, JRAntCompileTask использует путь для предоставления набора файлов для компиляции

task compileJasperReports {
  ext.resDir = file("$buildDir/compiled-reports")
  ext.tmpDir = file("$buildDir/tmp")

  doLast {
    resDir.mkdirs()
    tmpDir.mkdirs()

    ant {
      taskdef(name: 'jrc',
        classname: 'net.sf.jasperreports.ant.JRAntCompileTask',
        classpath: configurations.jasperreports.asPath
      )
      jrc(srcdir: 'reports', destdir: resDir, tempdir: tmpDir, keepjava: 'false', xmlvalidation: 'true') {
        classpath(path: configurations.reports.asPath)
        include(name: '**/*.jrxml')
      }
    }
  }
}

Итак, я разбил путь на равные множества.

task compileJasperReports {
  dependsOn ':ReportsBase:jar'

  ext.resDir = file("$buildDir/compiled-reports")
  ext.tmpDir = file("$buildDir/tmp")

  doLast 
  {
    resDir.mkdirs()
    tmpDir.mkdirs()

    ant {
      String[] files = fileset(dir: 'reports', {
        include(name: '**/*.jrxml')
      }).getDirectoryScanner(project).includedFiles

      int tasks = 4
      int partsize = (files.size() + tasks - 1).intdiv(tasks)
      def parts = []

      for (int task in 0..<tasks) {
        def range = new IntRange(false, partsize * task, Math.min(partsize * (task + 1), files.size()))
        println "### task: $task ${range.from}..${range.to}"

        Path part = path {filelist(dir: 'reports', files: files[range].join(','))}
        parts.add(part)
      }

      taskdef(name: 'jrc',
        classname: 'net.sf.jasperreports.ant.JRAntCompileTask',
        classpath: configurations.jasperreports.asPath)

      parallel(threadsPerProcessor: 2) {
        for (Path part in parts) {
          jrc(srcdir: part, destdir: resDir, tempdir: tmpDir, keepjava: 'false', xmlvalidation: 'true') {
            classpath(path: configurations.reports.asPath)
          }
        }
      }
    }
  }
}

Но ничего не произошло.При ведении журнала --debug я вижу много сообщений

   [ant:jrc] file.jrxml omitted as file.jasper is up to date.

Что я делаю не так?Есть ли лучший способ проскользнуть путь?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...