2016-11-30 2 views
0

Ich versuche, meine DataSource mit Hilfe von Gradle zu initialisieren, aber Gradle nicht die Werte in meine yml, die gespeichert ist in einer .properties auf meinem Rechner dh ~/.gradle und ich habe eine .properties-Datei an diesem Ort.Hinzufügen von Werten in WAR-Datei zu YML-Datei von Werten in einer .properties-Datei, die lokal in Gradle gespeichert werden

In Gradle habe ich eine Methode die Werte aus den .properties wie so Datei zu erhalten:

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) 

Dann in meiner yml Datei ich habe:

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

Allerdings, wenn ich den Krieg bauen Datei und schauen Sie in der Datei app.yml die richtigen Werte sind nicht da, nur ${DB_URI} etc und nicht die Zeichenfolgen, die es von meiner Datei .properties erhalten sollte und Eingabe von in meine app.yml Datei.

Wenn ich die app laufen bekomme ich die folgenden Fehler:

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

Hinweis: Unter build/resources/main/app.yml die Werten aus meiner app.properties Datei gibt es, nur nicht in der WAR-Datei.

Antwort

1

In Ihrem Setup anweisen, Sie Gradle dass nach Ihre war Aufgabe ausgeführt wird, es sollten immer die copyDBConfig Aufgabe ausführen, die zu spät ist, als der Krieg bereits gebaut. Eine eigene Aufgabe zu machen, ist jedoch nicht der richtige Weg. Konfigurieren Sie stattdessen die processResources Aufgabe wie folgt:

processResources { 
    filesMatching('app.yml') { 
     expand DB_URI: project.findProperty("dbURI") ?: "", 
       DB_USERNAME: project.findProperty("dbUsername") ?: "", 
       DB_PASSWORD: project.findProperty("dbPassword") ?: "" 
    } 
} 
Verwandte Themen