如何检测grails中的构建时间?此外,在构建战争时指定提交修订

时间:2013-11-01 13:00:39

标签: tomcat grails build war

我必须在不使用外部数据库的情况下从正在运行的应用中显示一些部署级别参数。第一个是战争建立日期时间。有没有办法让我的tomcat部署grails应用程序知道什么时候构建?

此外,我们有什么方法可以指定战争的提交修订,然后可以由应用程序读取?读取修订版号的脚本是外部任务,但我关心的是在自动构建战争时传递此值,并在部署时读取应用程序。

2 个答案:

答案 0 :(得分:1)

您可以通过scripts/_Events.groovy添加eventCreateWarStart来完成此操作。最终的webapp内容已经在暂存目录中组装之后但在压缩它们以进行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')
  }
}

这将运行脚本并将其输出放入WAR中,您可以使用AnyClassInYourApplication.getResource("/revision.txt")从代码中读取它。

通过添加类似

的内容,您可以使用完全相同的构建时间原则
new File(stagingDir, "WEB-INF/classes/build.timestamp").text = "${new Date()}"

eventCreateWarStart

如果您想要非常聪明,请让您的脚本以与Java兼容的“属性”格式文件输出详细信息,例如

my.app.revision=123456
my.app.build.timestamp=Fri Nov 01 14:25:30 GMT 2013

然后在您的应用中Config.groovyclasspath:build-details.properties添加到grails.config.locations,然后通过grailsApplication.config提供详细信息。

答案 1 :(得分:0)

以上答案适用于grails2,但是任何寻找grails 3解决方案的人都可以使用buildProperties任务

#!/bin/bash

# Check if the number of lines is greater than 3
commit_msg_file="${1}"
minimum_lines=3
num_lines=$(wc -l "${commit_msg_file}" | cut -f1 -d' ')

if (( $num_lines < $minimum_lines )); then
    echo >&2 "Error!"
    exit 1
fi

它将在meta-info / grails.build.info文件中加入战争

相同的方法可用于git提交或任何其他细节。

请参阅此文How to add build date and other custom information to grails war