По умолчанию вы не можете передавать пользовательские свойства в команду grails
.
Из Документация командной строки Grails :
Команда grailsфронт к вызову gradle, из-за этого могут быть неожиданные побочные эффекты. Например, при выполнении grails -Dapp.foo = bar run-app системное свойство app.foo не будет доступно вашему приложению. Это потому, что bootRun в вашем build.gradle настраивает системные свойства. Для этого вы можете просто добавить все свойства System.properties к bootRun в build.gradle, например:
bootRun{
systemProperties System.properties // Please note not to use '=', because this will > override all configured systemProperties. This will append them.
}
и использовать в своем скрипте для извлечения любых пользовательских свойств:
ext {
fooBar = bootRun.systemProperties['foo.bar']
println "fooBar: ${fooBar}"
}
Кроме того, вы можете передать ограниченный набор свойств на основе префикса:
bootRun{
systemProperties System.properties.inject([:]){acc,item-> item.key.startsWith('foo.')?acc << [(item.key.substring('foo.'.length())):item.value]:acc }
}
И просто получить свойство без префикса:
ext {
fooBar = bootRun.systemProperties['bar']
println "fooBar: ${fooBar}"
}
Вы можете играть с передачей свойств в bootRun
section:
systemProperties System.properties.inject([:]){acc,item-> item.key.startsWith('foo.')?acc << [(item.key):item.value]:acc }
будет иметь все свойства, начиная с 'foo' и с суффиксом:
bootRun.systemProperties['foo.bar']