2017-01-03 3 views
0

Ich habe ein Spring Boot 1.4.3 Projekt welches Liquibase beim Start laden soll. Es sollte eine einfache Konfiguration sein, aber ich habe viel Zeit damit verbracht, die folgende Arbeit zu erledigen.Spring Boot Liquibase nimmt nicht alle application.yml Dateien auf

Betrachten Sie ein ModuleA (ein normales jar) und ein ModuleB (ein bootstrapped jar). ModuleB hat eine Abhängigkeit von moduleA. Wenn also moduleB gestartet wird, befindet sich moduleA auf seinem Klassenpfad.

ModuleA enthält einige generische Eigenschaften, die in einer application.yml und einigen in einer application.properties-Datei codiert sind. ModuleB hat auch eine application.yml-Datei mit spezifischeren Eigenschaften.

In ModuleA habe ich meine Liquibase-Eigenschaften in der application.yml-Datei definiert. Man würde erwarten, dass beim Starten von ModuleB die liquibase-Eigenschaften verfügbar wären. Dies funktioniert jedoch nicht.

Wenn ich die liquibase Eigenschaften in der application.properties in ModuleA ablegen, werden die Eigenschaften ausgewählt, wenn ModuleB gestartet wird.

Also meine Frage ist: ist es unmöglich, zwei 'application.yml' Dateien auf dem Classpath zu haben? Ich finde nichts darüber in den documentation und in der Tat, im ersten Teil erwähnt, dass es möglich sein sollte:

14. Application properties outside of your packaged jar (application.properties and YAML variants). 
15. Application properties packaged inside your jar (application.properties and YAML variants). 

Antwort

0

Nein es ist nicht möglich. Es gibt keine Zusammensetzung von mehreren application.properties oder application.yml. Das würde die Verfolgung sehr erschweren. Sie können den Endpunkt /env überprüfen, um zu überprüfen, was der Umgebung hinzugefügt wurde. Sie können auch sehen, welche Property-Quellen (= welche "Datei") geladen wurde.

Als ich das Dokument lese, wird mir klar, dass Sie das Gegenteil verstehen. Bitte erstellen Sie ein Problem, um das Dokument explizit zu bitten.

+0

Ich habe ein bisschen mehr Forschung, weil es seltsam war, dass mehrere application.properties funktionieren, aber es stellt sich heraus, funktioniert nicht. Ich hatte moduleA/application-dev.properties moduleB/application.properties Sie sind also richtig. Ich kannte die/env URL nicht, kann sehr nützlich sein (aber gleichzeitig gefährlich). –

Verwandte Themen