Вы можете сделать что-то подобное в вашем Config.groovy
:
environments {
development {
if (System.properties["os.name"] == "Linux") {
grails.config.locations = [ "file:$basedir/grails-app/conf/linux.properties" ]
} else {
grails.config.locations = [ "file:$basedir/grails-app/conf/windows.properties" ]
}
}
...
}
В качестве альтернативы, для подхода, основанного на сервисе, вы можете объединить все специфическое поведение ОС в реализации интерфейса сервиса. Например:
// OsPrinterService.groovy
interface OsPrinterService {
void printOs();
}
// LinuxOsPrinterService.groovy
class LinuxOsPrinterService implements OsPrinterService {
void printOs() { println "Linux" }
}
// WindowsOsPrinterService.groovy
class WindowsOsPrinterService implements OsPrinterService {
void printOs() { println "Windows" }
}
Затем создайте правильный экземпляр в grails-app/conf/spring/resources.groovy
, например, так:
beans = {
if (System.properties["os.name"] == "Linux") {
osPrinterService(LinuxOsPrinterService) {}
} else {
osPrinterService(WindowsOsPrinterService) {}
}
}
Тогда к вашим объектам будет автоматически добавлен правильный сервис к весне.