Reinstate leading / in default value for spring.liquibase.change-log

Unfortunately, while redundant for new applications, removing the
leading slash adversely affected existing application upon upgrades as
it caused Liquibase to re-apply every change log.

Closes gh-20177
This commit is contained in:
Andy Wilkinson
2020-03-10 20:52:51 +00:00
parent d9d6cb6f1f
commit c917b61484
5 changed files with 15 additions and 15 deletions

View File

@@ -37,7 +37,7 @@ public class LiquibaseProperties {
/**
* Change log configuration path.
*/
private String changeLog = "classpath:db/changelog/db.changelog-master.yaml";
private String changeLog = "classpath:/db/changelog/db.changelog-master.yaml";
/**
* Comma-separated list of runtime contexts to use.

View File

@@ -1105,7 +1105,7 @@
"name": "liquibase.change-log",
"type": "java.lang.String",
"description": "Change log configuration path.",
"defaultValue": "classpath:db/changelog/db.changelog-master.yaml",
"defaultValue": "classpath:/db/changelog/db.changelog-master.yaml",
"deprecation": {
"replacement": "spring.liquibase.change-log",
"level": "error"

View File

@@ -102,7 +102,7 @@ class LiquibaseAutoConfigurationTests {
void defaultSpringLiquibase() {
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
.run(assertLiquibase((liquibase) -> {
assertThat(liquibase.getChangeLog()).isEqualTo("classpath:db/changelog/db.changelog-master.yaml");
assertThat(liquibase.getChangeLog()).isEqualTo("classpath:/db/changelog/db.changelog-master.yaml");
assertThat(liquibase.getContexts()).isNull();
assertThat(liquibase.getDefaultSchema()).isNull();
assertThat(liquibase.isDropFirst()).isFalse();
@@ -112,26 +112,26 @@ class LiquibaseAutoConfigurationTests {
@Test
void changelogXml() {
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
.withPropertyValues("spring.liquibase.change-log:classpath:db/changelog/db.changelog-override.xml")
.withPropertyValues("spring.liquibase.change-log:classpath:/db/changelog/db.changelog-override.xml")
.run(assertLiquibase((liquibase) -> assertThat(liquibase.getChangeLog())
.isEqualTo("classpath:db/changelog/db.changelog-override.xml")));
.isEqualTo("classpath:/db/changelog/db.changelog-override.xml")));
}
@Test
void changelogJson() {
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
.withPropertyValues("spring.liquibase.change-log:classpath:db/changelog/db.changelog-override.json")
.withPropertyValues("spring.liquibase.change-log:classpath:/db/changelog/db.changelog-override.json")
.run(assertLiquibase((liquibase) -> assertThat(liquibase.getChangeLog())
.isEqualTo("classpath:db/changelog/db.changelog-override.json")));
.isEqualTo("classpath:/db/changelog/db.changelog-override.json")));
}
@Test
@EnabledOnJre(JRE.JAVA_8)
void changelogSql() {
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
.withPropertyValues("spring.liquibase.change-log:classpath:db/changelog/db.changelog-override.sql")
.withPropertyValues("spring.liquibase.change-log:classpath:/db/changelog/db.changelog-override.sql")
.run(assertLiquibase((liquibase) -> assertThat(liquibase.getChangeLog())
.isEqualTo("classpath:db/changelog/db.changelog-override.sql")));
.isEqualTo("classpath:/db/changelog/db.changelog-override.sql")));
}
@Test
@@ -381,7 +381,7 @@ class LiquibaseAutoConfigurationTests {
@Bean
SpringLiquibase springLiquibase(DataSource dataSource) {
SpringLiquibase liquibase = new SpringLiquibase();
liquibase.setChangeLog("classpath:db/changelog/db.changelog-master.yaml");
liquibase.setChangeLog("classpath:/db/changelog/db.changelog-master.yaml");
liquibase.setShouldRun(true);
liquibase.setDataSource(dataSource);
return liquibase;