Gradle 模板处理

Gradle template processing

我有一个 gradle 构建并希望使一些文本文件更加动态,因为它们将始终包含当前构建的版本号。一旦文件被视为模板并且版本号作为来自 gradle.

的变量,这应该很容易。

我试过像这样使用 Aaron Nies' template plugin

plugins {
  id 'application'
  id "dev.anies.gradle.template" version "0.0.2"
}
...
tasks.register("template", TemplateTask) {
  data += [key: "value"]
  from('src/templates')
  into('build/templates')
}

但是Gradle总是抱怨

Could not get unknown property 'TemplateTask' for project ':app' of type org.gradle.api.Project.

我想坚持使用文档。这里可能有什么问题?

顺便说一句,此时我不必使用 Freemarker 模板。如果有人展示如何使用可以替换变量的内置模板引擎,我也会接受它作为答案。

好的,所以我开始使用 Ant 的 ReplaceTokenFilter。毕竟我在文档中找到了相关行:

https://docs.gradle.org/current/userguide/working_with_files.html#sec:copying_files 示例 36(在复制文件时过滤文件)使用 ReplaceTokenFilter。但与我在网上找到的许多示例不同,它还包含行

import org.apache.tools.ant.filters.ReplaceTokens

这最终使它对我有用。

至于FreeMarkerTemplates我还不知道,不过我的案子已经解决了。