diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle b/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle index 7da8f6362e..c901a3fc0a 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle @@ -108,7 +108,6 @@ dependencies { optional("org.hibernate.validator:hibernate-validator") optional("org.influxdb:influxdb-java") optional("org.liquibase:liquibase-core") { - exclude group: "javax.activation", module: "javax.activation-api" exclude group: "javax.xml.bind", module: "jaxb-api" } optional("org.mongodb:mongodb-driver-reactivestreams") diff --git a/spring-boot-project/spring-boot-actuator/build.gradle b/spring-boot-project/spring-boot-actuator/build.gradle index e9a027a00e..37325cfd7e 100644 --- a/spring-boot-project/spring-boot-actuator/build.gradle +++ b/spring-boot-project/spring-boot-actuator/build.gradle @@ -50,7 +50,6 @@ dependencies { optional("org.hibernate.validator:hibernate-validator") optional("org.influxdb:influxdb-java") optional("org.liquibase:liquibase-core") { - exclude group: "javax.activation", module: "javax.activation-api" exclude(group: "javax.xml.bind", module: "jaxb-api") } optional("org.mongodb:mongodb-driver-reactivestreams") diff --git a/spring-boot-project/spring-boot-autoconfigure/build.gradle b/spring-boot-project/spring-boot-autoconfigure/build.gradle index 452c3e2235..0841bd8b70 100644 --- a/spring-boot-project/spring-boot-autoconfigure/build.gradle +++ b/spring-boot-project/spring-boot-autoconfigure/build.gradle @@ -122,7 +122,6 @@ dependencies { exclude group: "javax.xml.bind", module: "jaxb-api" } optional("org.liquibase:liquibase-core") { - exclude group: "javax.activation", module: "javax.activation-api" exclude group: "javax.xml.bind", module: "jaxb-api" } optional("org.messaginghub:pooled-jms") { 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 f19ab38f01..8beb5ffcae 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 @@ -113,6 +113,8 @@ public class LiquibaseAutoConfiguration { liquibase.setRollbackFile(properties.getRollbackFile()); liquibase.setTestRollbackOnUpdate(properties.isTestRollbackOnUpdate()); liquibase.setTag(properties.getTag()); + liquibase.setShowSummary(properties.getShowSummary()); + liquibase.setShowSummaryOutput(properties.getShowSummaryOutput()); return liquibase; } 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 74588c2b81..fa92d5c569 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 @@ -19,6 +19,8 @@ package org.springframework.boot.autoconfigure.liquibase; import java.io.File; import java.util.Map; +import liquibase.UpdateSummaryEnum; +import liquibase.UpdateSummaryOutputEnum; import liquibase.integration.spring.SpringLiquibase; import org.springframework.boot.context.properties.ConfigurationProperties; @@ -135,6 +137,18 @@ public class LiquibaseProperties { */ private String tag; + /** + * Whether to print a summary of the update operation. Values can be 'off', 'summary' + * (default), 'verbose' + */ + private UpdateSummaryEnum showSummary; + + /** + * Where to print a summary of the update operation. Values can be 'log' (default), + * 'console', or 'all'. + */ + private UpdateSummaryOutputEnum showSummaryOutput; + public String getChangeLog() { return this.changeLog; } @@ -288,4 +302,20 @@ public class LiquibaseProperties { this.tag = tag; } + public UpdateSummaryEnum getShowSummary() { + return this.showSummary; + } + + public void setShowSummary(UpdateSummaryEnum showSummary) { + this.showSummary = showSummary; + } + + public UpdateSummaryOutputEnum getShowSummaryOutput() { + return this.showSummaryOutput; + } + + public void setShowSummaryOutput(UpdateSummaryOutputEnum showSummaryOutput) { + this.showSummaryOutput = showSummaryOutput; + } + } 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 2e0be6c31b..6a9490f5dd 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 @@ -29,6 +29,8 @@ import java.util.function.Consumer; import javax.sql.DataSource; import com.zaxxer.hikari.HikariDataSource; +import liquibase.UpdateSummaryEnum; +import liquibase.UpdateSummaryOutputEnum; import liquibase.integration.spring.SpringLiquibase; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; @@ -117,6 +119,9 @@ class LiquibaseAutoConfigurationTests { assertThat(liquibase.getDefaultSchema()).isNull(); assertThat(liquibase.isDropFirst()).isFalse(); assertThat(liquibase.isClearCheckSums()).isFalse(); + UpdateSummaryOutputEnum showSummaryOutput = (UpdateSummaryOutputEnum) ReflectionTestUtils + .getField(liquibase, "showSummaryOutput"); + assertThat(showSummaryOutput).isEqualTo(UpdateSummaryOutputEnum.LOG); })); } @@ -383,6 +388,28 @@ class LiquibaseAutoConfigurationTests { .run(assertLiquibase((liquibase) -> assertThat(liquibase.getLabelFilter()).isEqualTo("test, production"))); } + @Test + void overrideShowSummary() { + this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class) + .withPropertyValues("spring.liquibase.show-summary=off") + .run(assertLiquibase((liquibase) -> { + UpdateSummaryEnum showSummary = (UpdateSummaryEnum) ReflectionTestUtils.getField(liquibase, + "showSummary"); + assertThat(showSummary).isEqualTo(UpdateSummaryEnum.OFF); + })); + } + + @Test + void overrideShowSummaryOutput() { + this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class) + .withPropertyValues("spring.liquibase.show-summary-output=all") + .run(assertLiquibase((liquibase) -> { + UpdateSummaryOutputEnum showSummaryOutput = (UpdateSummaryOutputEnum) ReflectionTestUtils + .getField(liquibase, "showSummaryOutput"); + assertThat(showSummaryOutput).isEqualTo(UpdateSummaryOutputEnum.ALL); + })); + } + @Test @SuppressWarnings("unchecked") void testOverrideParameters() { diff --git a/spring-boot-project/spring-boot/build.gradle b/spring-boot-project/spring-boot/build.gradle index bad1e5e57f..fcb00b6648 100644 --- a/spring-boot-project/spring-boot/build.gradle +++ b/spring-boot-project/spring-boot/build.gradle @@ -71,7 +71,6 @@ dependencies { exclude(group: "javax.xml.bind", module: "jaxb-api") } optional("org.liquibase:liquibase-core") { - exclude group: "javax.activation", module: "javax.activation-api" exclude(group: "javax.xml.bind", module: "jaxb-api") } optional("org.postgresql:postgresql") diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-r2dbc-liquibase/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-r2dbc-liquibase/build.gradle index 376dda13dd..bd8a4c685d 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-r2dbc-liquibase/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-r2dbc-liquibase/build.gradle @@ -9,7 +9,6 @@ dependencies { implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-data-r2dbc")) runtimeOnly("org.liquibase:liquibase-core") { - exclude group: "javax.activation", module: "javax.activation-api" exclude group: "javax.xml.bind", module: "jaxb-api" } runtimeOnly("org.postgresql:postgresql") diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-liquibase/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-liquibase/build.gradle index 1126e59d0b..292368536e 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-liquibase/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-liquibase/build.gradle @@ -11,7 +11,6 @@ dependencies { implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web")) implementation("jakarta.xml.bind:jakarta.xml.bind-api") implementation("org.liquibase:liquibase-core") { - exclude group: "javax.activation", module: "javax.activation-api" exclude group: "javax.xml.bind", module: "jaxb-api" }