使用带有扩展的复制任务时,Gradle 未检测到更改

Ido*_*Ran 2 gradle

我正在使用 expand 方法复制文件并替换其中的字符串。
问题是当 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()
  ])
}
Run Code Online (Sandbox Code Playgroud)

即使版本更改,gradle 仍然将结果文件视为最新的。

JB *_*zet 5

这确实很可惜。但它应该很容易通过做

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)
}
Run Code Online (Sandbox Code Playgroud)

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