爲了這個目的,你可以將腳本添加到Grails應用程序,增加了這些信息,只要用戶建立戰爭的文件。在名爲_Events.groovy
的grails應用程序的./scripts下創建一個新的腳本文件。在這裏,您可以勾選不同的Grails事件,這些事件在應用程序啓動或構建戰爭時觸發。
戰爭一旦建成,您就可以使用eventCreateWarStart
事件記錄信息。以下是一些可幫助您入門的示例代碼。它從本地git獲取當前分支名稱和提交標識,並將數據存儲到名爲application.properties
的文件中。
eventCreateWarStart = { warName, stagingDir ->
addBuildInfo("${stagingDir}/application.properties")
}
private void addBuildInfo(String propertyFile) {
def jVersion = [
"appName" : grailsApp.metadata['app.name'],
"version" : grailsApp.metadata["app.version"],
"buildDate" : new Date(),
"branch" : getBranch().trim(),
"Commit" : getRevision().trim(),
"buildNumber": System.getProperty("build.number", "CUSTOM"),
]
File file = new File(propertyFile)
file.text = ""
jVersion.each {
key, value ->
file.text += "${key}:\t${value}\n"
}
}
def getBranch() {
Process process = "git rev-parse --abbrev-ref HEAD".execute()
process.waitFor()
return process.text ?: 'UNKNOWN'
}
def getRevision() {
Process process = "git log --oneline --no-abbrev-commit -1".execute()
process.waitFor()
return process.text ?: 'UNKNOWN'
}
有plugin還聲稱來從哈得遜/詹金斯生成屬性,如果被用於建立戰爭,他們一個Grails。