如何在构建WAR时传递自定义参数

时间:2016-04-27 00:54:03

标签: grails war

我想在构建war时传递自定义参数,并希望在我的控制器中访问该参数,我尝试这样做

grails war -Dcustom.arg=value1

在控制器中

def customArg = System.getProperty("custom.arg")

如果我对run-app执行相同操作但不使用WAR,则可以使用此功能。我想我可以通过在启动Tomcat服务器时添加'custom.arg'参数来实现这一点,但我不想这样做,因为我无法访问Tomcat服务器。那么,有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:1)

我找到了解决方法。我使用外部配置文件并在_Events.groovy文件中写入文件。我创建了一个名为' custom-config.properties'的新文件。归档于' grails-app / config'并在config.groovy文件中添加以下内容

grails.config.locations = ["classpath:custom-config.properties"]

然后我创建了_Events.groovy文件并添加了以下内容

eventCompileStart  = { kind ->
    String customConfig = System.getProperty('custom.arg')
    File file = new File('grails-app/conf/custom-config.properties')
    if(brand) file.text = "custom.arg=${customConfig}"
    else file.text = ''
}

现在,我可以在控制器中执行此操作

grailsApplication.config.custom.arg

只要你传递像这样的参数

,这适用于grails war和grails run-app
grails war -Dcustom.arg=value1

grails run-app -Dcustom.arg=value1