2016-11-30 4 views
0

gradleのヘルプを使用してdataSourceを初期化しようとしていますが、これは保存されているyml私のマシン上の.propertiesには、~/.gradleというファイルがあり、その場所に.propertiesファイルを作成しました。ローカルに保存された.propertiesファイルに格納されている値からymlファイルに値を追加する

私は.propertiesファイルからの値がそうのようなファイルを取得するための方法を作ったのGradleで

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} 

注:私のapp.propertiesファイルからbuild/resources/main/app.ymlの下の値がちょうどないwarファイルに、あります。お使いの設定では

答えて

1

あなたは、タスクが実行されあなたwar後に戦争がすでに構築されているとして、それは常に、遅すぎるcopyDBConfigタスクを実行する必要があることのGradleを指示します。とにかくこのために自分の仕事をすることは、行く方法ではありません。代わりにタスクを次のように設定してください。

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