使用带有展开的复制任务时,Gradle不会检测到更改

时间:2015-01-25 17:12:49

标签: 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()
  ])
}

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

1 个答案:

答案 0 :(得分:4)

这确实很可惜。但是应该通过

轻松解决
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)
}

这样,令牌被添加到任务的输入中,并且如果令牌自上次执行以来已经改变,则重新执行任务。