2016-11-30 62 views
0

我試圖用gradle初始化我的dataSource,但是gradle沒有將值存入我存儲的yml在我的機器上的.properties中,例如~/.gradle,我在該位置創建了一個.properties文件。從存儲在本地存儲在gradle中的.properties文件中的值中將值添加到war文件到yml文件中

在搖籃我做了一個方法來獲得從的.properties文件中的值,如下所示:

task copyDBConfig(type: Copy) { 

    from 'src/main/resources' 
    include 'app.yml' 
    into 'build/resources/main' 
    expand([ 
      DB_URI: project.findProperty("dbURI") ?: "", 
      DB_USERNAME: project.findProperty("dbUsername") ?: "", 
      DB_PASSWORD: project.findProperty("dbPassword") ?: "", 
    ]) 
} 

war.finalizedBy(copyDBConfig) 

然後在我的yml文件我有:

spring: 
    datasource: 
     url: ${DB_URI} 
     username: ${DB_USERNAME} 
     password: ${DB_PASSWORD} 
     driverClassName: oracle.jdbc.OracleDriver 

然而,當我建立戰爭文件,並在app.yml文件中查看正確的值不存在,只是${DB_URI}等,而不是它應該從我的.properties文件中獲取並從我的app.yml文件中輸入的字符串。

當我運行應用程序,我得到了如下錯誤:

java.sql.SQLException: Driver:[email protected] returned null for URL:${DB_URI} 

注:build/resources/main/app.yml從我app.properties文件中的值都在那裏,只是沒有在戰爭文件。

回答

1

在你的設置,您指示搖籃正在運行的任務war應該始終運行copyDBConfig任務,這是爲時已晚,因爲戰爭已經建成。無論如何,爲此做一個自己的任務不是要走的路。改爲配置processResources這樣的任務:

processResources { 
    filesMatching('app.yml') { 
     expand DB_URI: project.findProperty("dbURI") ?: "", 
       DB_USERNAME: project.findProperty("dbUsername") ?: "", 
       DB_PASSWORD: project.findProperty("dbPassword") ?: "" 
    } 
} 
相關問題