将复制任务与展开一起使用时,Gradle未检测到更改

将复制任务与展开一起使用时,Gradle未检测到更改,gradle,Gradle,我很乐意使用扩展方法复制文件并替换其中的字符串。 问题是当expand的值更改时,gradle仍然将目标文件视为最新文件。我必须清理和构建文件以获得正确的值 这是复制任务: task copyProductionConfig(type: Copy) { from 'source' include 'config.properties' into 'build/war/WEB-INF/config' expand([ databaseHostname: 'db.compan

我很乐意使用扩展方法复制文件并替换其中的字符串。
问题是当expand的值更改时,gradle仍然将目标文件视为最新文件。我必须清理和构建文件以获得正确的值

这是复制任务:

task copyProductionConfig(type: Copy) {
  from 'source'
  include 'config.properties'
  into 'build/war/WEB-INF/config'
  expand([
    databaseHostname: 'db.company.com',
    version: versionId,
    buildNumber: (int)(Math.random() * 1000),
    date: new Date()
  ])
}

即使更改了版本,gradle仍然认为结果文件是最新的。

这确实很遗憾。但它应该很容易通过这样做来解决

task copyProductionConfig(type: Copy) {
  from 'source'
  include 'config.properties'
  into 'build/war/WEB-INF/config'
  def tokens = [
    databaseHostname: 'db.company.com',
    version: versionId,
    buildNumber: (int)(Math.random() * 1000),
    date: new Date()
  ]
  expand(tokens)
  inputs.properties(tokens)
}

这样,令牌被添加到任务的输入中,如果自上次执行以来令牌发生了更改,则任务将重新执行。

两个问题。为什么不使用war插件?你使用清洁任务吗?