在编译之前从Gradle构建修改Groovy源

时间:2014-10-26 23:36:57

标签: grails groovy

我有一个使用Gradle构建的Groovy应用程序。像往常一样,我在build.gradle脚本中定义了应用程序版本号/字符串。

现在我想在Groovy应用程序中使用该版本字符串,作为硬编码的静态信息。例如,作为主应用程序类中的final static成员:

class MyApp {
    final static APP_VERSION = "0.1"
}

由于版本信息来自build.gradle脚本,因此在编译源代码之前,需要由Gradle设置上面的Groovy类成员。

换句话说:我需要一个Gradle任务,允许我在Grodle构建变量之前设置变量的值。我可以通过正则表达式搜索该值并将其替换为Groovy源文件,但这感觉有点笨拙。

任何"最佳实践"想法如何实现?

1 个答案:

答案 0 :(得分:0)

我无法给你最终解决方案,但我认为你应该看看AST Transformations

另一种选择,如果你在jar / war中打包应用程序, - 你可以从清单文件中获取应用程序的一个版本(但是如果你从IDE启动应用程序它将不起作用)

final static versin = MyApp.class.getPackage().getSpecificationVersion()