您可以通过scripts/_Events.groovy添加eventCreateWarStart. 在最终 Web 应用程序的内容已组装到暂存目录中之后但在它们被压缩以形成 WAR 之前,会触发此事件。您可以在暂存目录中创建新文件以将它们包含在 WAR 中。例如:
eventCreateWarStart = { warName, stagingDir ->
ant.exec(executable:'read-revision-number',
output:"${stagingDir}/WEB-INF/classes/revision.txt") {
arg(value:'any-argument-the-script-needs')
}
}
Run Code Online (Sandbox Code Playgroud)
这将运行脚本并将其输出放入 WAR 中,您可以使用AnyClassInYourApplication.getResource("/revision.txt").
您可以在构建时使用完全相同的原则,通过放置类似的内容
new File(stagingDir, "WEB-INF/classes/build.timestamp").text = "${new Date()}"
Run Code Online (Sandbox Code Playgroud)
内eventCreateWarStart。
如果您想要真正聪明,请让您的脚本以 Java 兼容的“属性”格式文件输出详细信息,例如
my.app.revision=123456
my.app.build.timestamp=Fri Nov 01 14:25:30 GMT 2013
Run Code Online (Sandbox Code Playgroud)
然后在您的应用程序中Config.groovy添加classpath:build-details.properties到grails.config.locations,然后可以通过 获得详细信息grailsApplication.config。