2016-04-27 9 views
0

ich ein benutzerdefiniertes Argument übergeben will, während Krieg zu bauen und diese Parameter in meinem Controller zugreifen will, habe ich versucht, diesen ControllerWie benutzerdefiniertes Argument übergibt, während IST Gebäude

grails war -Dcustom.arg=value1 

Und dabei

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

Das funktioniert, wenn ich das gleiche mit Run-App aber nicht mit WAR mache. Ich denke, dass ich dies erreichen kann, indem ich beim Start des Tomcat-Servers das Argument 'custom.arg' hinzufüge, aber das möchte ich nicht, da ich keinen Zugriff auf die Tomcat-Server habe. Also, gibt es einen Weg, dies zu erreichen?

Antwort

0

Ich fand ein Workaround dafür. Ich benutzte externe Konfigurationsdatei und schrieb auf die Datei von _Events.groovy Datei. Ich habe eine neue Datei ‚custom-config.properties‘ Datei auf ‚Grails-app/config‘ genannt und hinzugefügt folgende Datei config.groovy

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

ich dann _Events.groovy Datei erstellt und addierten die folgenden

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 = '' 
} 

Jetzt kann ich tun dies nur in den Controllern

grailsApplication.config.custom.arg 

Dies funktioniert mit Grails Krieg und Grails Lauf App solange Sie Parameter übergeben wie diese

grails war -Dcustom.arg=value1 

oder

grails run-app -Dcustom.arg=value1