我想在构建war时传递自定义参数,并希望在我的控制器中访问该参数,我尝试这样做
grails war -Dcustom.arg=value1
在控制器中
def customArg = System.getProperty("custom.arg")
如果我对run-app执行相同操作但不使用WAR,则可以使用此功能。我想我可以通过在启动Tomcat服务器时添加'custom.arg'参数来实现这一点,但我不想这样做,因为我无法访问Tomcat服务器。那么,有没有办法实现这个目标?
答案 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-appgrails war -Dcustom.arg=value1
或
grails run-app -Dcustom.arg=value1