簡體   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