我在Grails 3的默认生成的application.yml文件中有一些属性。
test:
network:
path: '/home/cool/testing_data'
现在,我要执行的部分是在调用构建脚本时更改此属性,以使其对于可能在其上执行的各种操作系统有所不同。即:在Windows上,该路径应为“E:/ shared / testing_data”,而在solaris上,则应有所不同。
使用here这个帖子,我可以得出结论,可以确定我当前所处的操作系统,从而有可能进行一些更改。例如:
import org.apache.tools.ant.taskdefs.condition.Os
task checkWin() << {
if (Os.isFamily(Os.FAMILY_WINDOWS)) {
// it is windows, lets change the path to not be linux like
}
}
所以我的问题是,根据需要使用gradle或其他任何方式,我是否可以更改application.yml文件中的属性以适应可能部署该应用程序的不同OS系统?我正在考虑逐行阅读application.yml文件并进行字符串替换,但是只有在没有更干净的解决方案的情况下,我才诉诸于此。
也许我是使用错误的工具按原样解决了这个问题,所以有一个很好的问题是,我是否缺少一种更简便的方法,可能是对诸如测试,开发,生产,对于操作系统,已经内置在grails的核心功能中,我可以重复使用?
最佳答案
只需在application.groovy
所在的文件夹中创建application.yml
文件即可。在groovy文件中,您可以使用任何脚本来设置属性值。
例如,将此行添加到application.groovy
文件中(也从yml中删除选项):
test.network.path = Os.isFamily(Os.FAMILY_WINDOWS) ? 'd:\something' : '/home/something'