2017-08-29 3 views
0

Nehmen wir an, ich habe 2 Maven Module: Datenquelle, die als Glas verpackt ist und Portal die als Krieg verpackt ist und es hängt von Datenquelle.Zugang zu liquibase.properties mit Krieg

ich Liquibase in meinem Projekt bin mit und liquibase.properties in Datenquelle Modul Ressourcen gespeichert.

Jetzt möchte ich liquibase mit der Befehlszeile mit meiner Konfigurationsdatei ausführen. Ich versuche es mit dem Befehl zu tun:

java -jar liquibase.jar \ 
     --classpath=portal.war \ 
     --defaultsFile=liquibase.properties 
    rollback 

Aber ich bekomme Fehler von Liquibase:

Errors: 
    --url is required 
    --changeLogFile is required 

Es scheint, dass nicht meine Eigenschaften liquibase in verschachtelten jar Datei nicht sehen. Was mache ich falsch?

Antwort

0

Was mache ich falsch?

Anscheinend ... liquibase kann Eigenschaften aus dem Klassenpfad finden und laden. Hier ist der Code, der die Eigenschaft Datei als Ressource zu öffnen versucht:

try (InputStream resourceAsStream = getClass().getClassLoader() 
      .getResourceAsStream(potentialPropertyFile.getAbsolutePath())) { 
     if (resourceAsStream != null) { 
      parsePropertiesFile(resourceAsStream); 
     } 

} }

Wenn Sie keine absolute Ressourcenpfad versorgen, wird der Code versuchen, wird das lösen Pfad im Kontext eines aktuellen Verzeichnisses im Host-Dateisystem.

(Dies ist von der HEAD Liquibase Quellcode als von 2017.08.29:

Ich denke, dieses Verhalten ein Fehler ist ....)


Problemumgehung: Die Befehlszeilenoption für den absoluten Ressourcenpfad Ihre Eigenschaftendatei im Klassenpfad.