[英]DataSource.groovy classpath
def encryptedUid = getClass().getClassLoader()
.getResourceAsStream('user.txt')
.getText()
当我在Windows环境中运行dataSource.groovy文件中的这段代码时,它工作正常,但是当我在其中签入代码并且Jenkins尝试加载DataSource.groovy时,我得到了:
加载DataSource.groovy时出错:无法在空对象上调用方法getText()。
user.txt文件位于src / java文件夹的根目录中,我知道它已内置在Windows构建的war文件中。 它甚至根本无法在Linux机器上构建war文件。
有任何想法吗?
显然,您正在尝试配置数据库用户名/密码,但是出于安全原因,不想将它们直接放在DataSource.groovy
。 这是我的处理方式:
将秘密配置放在文件/grails-app/conf/secret.properties
。 该文件的内容如下所示:
dataSource.username=root
dataSource.password=secret
# other secret configuration
通过在Config.groovy
添加以下内容,将该文件包括在grails配置中
grails.config.locations = ["classpath:secret.properties"]
如果您希望能够覆盖配置。 在每个环境的secret.properties
,将其更改为
grails.config.locations = [
"classpath:secret.properties",
"classpath:secret-${Environment.current}.properties"
]
然后,您可以(可选)添加文件secret-DEVELOPMENT.properties
,该文件将覆盖开发环境中的secret.properties
中的配置,对于其他环境也是如此。
当然,为了secret*.properties
起作用,在构建war(或执行run-app
)时必须存在secret*.properties
文件,并且不应将其检入VCS。
您不限于放置这些配置。 文件放在类路径的相对位置。 您可以使用file:
前缀而不是classpath:
将它们放置在文件系统上的任何位置。 最后,您可以将秘密配置放入.groovy
配置中。 文件而不是.properties
文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.