与输入

时间:2018-06-12 08:27:10

标签: groovy build.gradle

我有一个任务需要使用与生成的输出相同的目录,因为它用于输入(它从模板和.xsd文件生成-ext.xsd文件)。我想我有两种可能的解决方案,看起来它们正在发挥作用。

使用FileNameFinder,如下所述:http://mrhaki.blogspot.com/2009/11/groovy-goodness-finding-files-with.html

task generateExtXsdFromTemplates {
  inputs.dir "$projectDir/src/main/resources"
  outputs.files new FileNameFinder().getFileNames("$projectDir/src/main/resources", "**/*-ext.xsd")

  ...
}

使用traverse或eachFileRecurse,如下所述:Get a list of all the files in a directory (recursive)

task generateExtXsdFromTemplates {
  inputs.dir "$projectDir/src/main/resources/xsd"

  def files = [];

  def processFileClosure = {
    println "working on ${it.canonicalPath}: "

    if (it.canonicalPath.endsWith("-ext.xsd")) {
      println "adding ${it.canonicalPath}: "
      files.add (it.canonicalPath);
    }
  }

  new File("$projectDir/src/main/resources/xsd").eachFileRecurse(FileType.FILES, processFileClosure);
  outputs.files files

  ...
}

我认为这些解决方案的问题是输入配置缓存/覆盖生成的输出文件。我不知道如何仅为输出而不是输入配置覆盖-ext.xsd。

这个问题是否有模式或更好的解决方案?

0 个答案:

没有答案