diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java
index f847e7cb0f..32a8915e30 100644
--- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java
+++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfiguration.java
@@ -126,6 +126,12 @@ public class LiquibaseAutoConfiguration {
liquibase.setChangeLog(this.properties.getChangeLog());
liquibase.setContexts(this.properties.getContexts());
liquibase.setDefaultSchema(this.properties.getDefaultSchema());
+ liquibase.setLiquibaseSchema(this.properties.getLiquibaseSchema());
+ liquibase.setLiquibaseTablespace(this.properties.getLiquibaseTablespace());
+ liquibase.setDatabaseChangeLogTable(
+ this.properties.getDatabaseChangeLogTable());
+ liquibase.setDatabaseChangeLogLockTable(
+ this.properties.getDatabaseChangeLogLockTable());
liquibase.setDropFirst(this.properties.isDropFirst());
liquibase.setShouldRun(this.properties.isEnabled());
liquibase.setLabels(this.properties.getLabels());
diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseProperties.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseProperties.java
index 62f906c165..ef3f2d195b 100644
--- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseProperties.java
+++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseProperties.java
@@ -53,6 +53,26 @@ public class LiquibaseProperties {
*/
private String defaultSchema;
+ /**
+ * Schema to use for Liquibase objects.
+ */
+ private String liquibaseSchema;
+
+ /**
+ * Tablespace to use for Liquibase objects.
+ */
+ private String liquibaseTablespace;
+
+ /**
+ * Name of table to use for tracking change history.
+ */
+ private String databaseChangeLogTable;
+
+ /**
+ * Name of table to use for tracking concurrent Liquibase usage.
+ */
+ private String databaseChangeLogLockTable;
+
/**
* Whether to first drop the database schema.
*/
@@ -132,6 +152,38 @@ public class LiquibaseProperties {
this.defaultSchema = defaultSchema;
}
+ public String getLiquibaseSchema() {
+ return this.liquibaseSchema;
+ }
+
+ public void setLiquibaseSchema(String liquibaseSchema) {
+ this.liquibaseSchema = liquibaseSchema;
+ }
+
+ public String getLiquibaseTablespace() {
+ return this.liquibaseTablespace;
+ }
+
+ public void setLiquibaseTablespace(String liquibaseTablespace) {
+ this.liquibaseTablespace = liquibaseTablespace;
+ }
+
+ public String getDatabaseChangeLogTable() {
+ return this.databaseChangeLogTable;
+ }
+
+ public void setDatabaseChangeLogTable(String databaseChangeLogTable) {
+ this.databaseChangeLogTable = databaseChangeLogTable;
+ }
+
+ public String getDatabaseChangeLogLockTable() {
+ return this.databaseChangeLogLockTable;
+ }
+
+ public void setDatabaseChangeLogLockTable(String databaseChangeLogLockTable) {
+ this.databaseChangeLogLockTable = databaseChangeLogLockTable;
+ }
+
public boolean isDropFirst() {
return this.dropFirst;
}
diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java
index 137ea6da09..847b8ff1c6 100644
--- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java
+++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/liquibase/LiquibaseAutoConfigurationTests.java
@@ -46,6 +46,7 @@ import org.springframework.boot.testsupport.Assume;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
+import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.test.util.ReflectionTestUtils;
import org.springframework.util.FileCopyUtils;
@@ -143,6 +144,32 @@ public class LiquibaseAutoConfigurationTests {
.isEqualTo("public")));
}
+ @Test
+ public void overrideLiquibaseInfrastructure() {
+ this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
+ .withPropertyValues("spring.liquibase.liquibase-schema:public",
+ "spring.liquibase.liquibase-tablespace:infra",
+ "spring.liquibase.database-change-log-table:LIQUI_LOG",
+ "spring.liquibase.database-change-log-lock-table:LIQUI_LOCK")
+ .run((context) -> {
+ SpringLiquibase liquibase = context.getBean(SpringLiquibase.class);
+ assertThat(liquibase.getLiquibaseSchema()).isEqualTo("public");
+ assertThat(liquibase.getLiquibaseTablespace()).isEqualTo("infra");
+ assertThat(liquibase.getDatabaseChangeLogTable())
+ .isEqualTo("LIQUI_LOG");
+ assertThat(liquibase.getDatabaseChangeLogLockTable())
+ .isEqualTo("LIQUI_LOCK");
+ JdbcTemplate jdbcTemplate = new JdbcTemplate(
+ context.getBean(DataSource.class));
+ assertThat(jdbcTemplate.queryForObject(
+ "SELECT COUNT(*) FROM public.LIQUI_LOG", Integer.class))
+ .isEqualTo(1);
+ assertThat(jdbcTemplate.queryForObject(
+ "SELECT COUNT(*) FROM public.LIQUI_LOCK", Integer.class))
+ .isEqualTo(1);
+ });
+ }
+
@Test
public void overrideDropFirst() {
this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class)
diff --git a/spring-boot-project/spring-boot-dependencies/pom.xml b/spring-boot-project/spring-boot-dependencies/pom.xml
index 402c87a802..f227e4658e 100644
--- a/spring-boot-project/spring-boot-dependencies/pom.xml
+++ b/spring-boot-project/spring-boot-dependencies/pom.xml
@@ -118,7 +118,7 @@
1.1.0
1.2.51
5.1.0.M1
- 3.6.1
+ 3.6.2
2.11.0
1.2.3
1.18.0
diff --git a/spring-boot-project/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc b/spring-boot-project/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc
index 432ac27ab7..fe2a1b305b 100644
--- a/spring-boot-project/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc
+++ b/spring-boot-project/spring-boot-docs/src/main/asciidoc/appendix-application-properties.adoc
@@ -566,6 +566,10 @@ content into your application. Rather, pick only the properties that you need.
spring.liquibase.check-change-log-location=true # Whether to check that the change log location exists.
spring.liquibase.contexts= # Comma-separated list of runtime contexts to use.
spring.liquibase.default-schema= # Default database schema.
+ spring.liquibase.liquibase-schema= # Schema to use for Liquibase objects.
+ spring.liquibase.liquibase-tablespace= # Tablespace to use for Liquibase objects.
+ spring.liquibase.database-change-log-table= # Name of table to use for tracking change history.
+ spring.liquibase.database-change-log-lock-table= # Name of table to use for tracking concurrent Liquibase usage.
spring.liquibase.drop-first=false # Whether to first drop the database schema.
spring.liquibase.enabled=true # Whether to enable Liquibase support.
spring.liquibase.labels= # Comma-separated list of runtime labels to use.