【发布时间】:2014-12-22 03:22:07
【问题描述】:
我有一个使用 Gradle 构建的 Groovy 应用程序。像往常一样,我在build.gradle 脚本中定义了应用程序版本号/字符串。
现在我想在 Groovy 应用程序中使用该版本字符串,作为硬编码的静态信息。例如作为主应用程序类中的final static 成员:
class MyApp {
final static APP_VERSION = "0.1"
}
由于版本信息来自build.gradle 脚本,上述Groovy 类成员需要在编译源代码之前由Gradle 设置。
换句话说:我需要一个 Gradle 任务,它允许我在 Groovy 源代码中设置变量的值,然后再由 Gradle 构建它们。我可以通过正则表达式搜索该值并在 Groovy 源文件中替换它,但这感觉有点笨拙。
任何“最佳实践”想法如何实现?
【问题讨论】:
-
该类是否包含除版本之外的任何内容?是否有某些原因您不能从属性文件中写入读取它?
-
@DylanBijnagte:我想对版本进行硬编码,但不想在运行时从文件中读取它。是的,该类确实包含此版本属性之外的其他代码。
-
如果文件很小,我会说它是模板,否则我认为您可能会被正则表达式解决方案卡住。
-
如何创建一个仅包含此值的 MyAppVersion 类文件。 MyApp 引用 MyAppVersion 但您在编译之前将 MyAppVersion 替换为 Gradle 构建。那么就不需要正则表达式了。
-
@ToddWCrone:嗯...我想这是一个不错的方法,谢谢。