我在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文件中的属性以适应可能部署应用程序的不同操作系统吗?我正在考虑逐行读取application.yml文件并进行字符串替换,但只有在没有更清洁的解决方案的情况下才会使用它。
也许我使用错误的工具来解决这个问题,所以一个很好的问题就是,这里有一种更简单的方法,可能是对不同“环境”的类似方法:test,dev ,prod,用于操作系统,已经内置到我可以重复使用的grails的核心功能中?
答案 0 :(得分:1)
只需在application.groovy
所在的文件夹中创建application.yml
文件即可。在groovy文件中,您可以使用任何脚本来设置属性值。
例如,将此行添加到application.groovy
文件(也从yml中删除选项):
test.network.path = Os.isFamily(Os.FAMILY_WINDOWS) ? 'd:\something' : '/home/something'