def encryptedUid = getClass().getClassLoader()
.getResourceAsStream('user.txt')
.getText()
当我在windows环境中运行时,dataSource.groovy文件中的这段代码运行正常,但是当我检查代码并且Jenkins尝试加载DataSource.groovy时,我得到:
加载DataSource.groovy时出错:无法在null对象上调用方法getText()。
user.txt文件位于src / java文件夹的根目录中,我知道它是内置于windows build中的war文件中的。它甚至无法在Linux机器上构建war文件。
有什么想法吗?
答案 0 :(得分:1)
显然您正在尝试配置数据库用户名/密码,但出于安全原因,我们不想直接将它们放入DataSource.groovy
。以下是我如何处理这个问题:
将秘密配置放在文件/grails-app/conf/secret.properties
中。该文件的内容如下所示:
dataSource.username=root
dataSource.password=secret
# other secret configuration
通过将以下内容添加到Config.groovy
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
)时必须存在run-app
文件,并且不应将其签入VCS。
您不仅限于放置这些配置。文件位于类路径的相对位置。您可以使用file:
前缀而不是classpath:
将它们放在文件系统的任何位置。最后,您可以将秘密配置放在.groovy
配置中。文件而不是.properties
文件。