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