繁体   English   中英

DataSource.groovy类路径

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM