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 49d69c93954..4367e65e238 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 @@ -134,6 +134,12 @@ public class LiquibaseAutoConfiguration { if (properties.getUiService() != null) { liquibase.setUiService(UIServiceEnum.valueOf(properties.getUiService().name())); } + if (properties.getAnalyticsEnabled() != null) { + liquibase.setAnalyticsEnabled(properties.getAnalyticsEnabled()); + } + if (properties.getLicenseKey() != null) { + liquibase.setLicenseKey(properties.getLicenseKey()); + } customizers.orderedStream().forEach((customizer) -> customizer.customize(liquibase)); 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 0746aa6d6f5..c9571a70cf3 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 @@ -154,6 +154,16 @@ public class LiquibaseProperties { */ private UiService uiService; + /** + * Whether to send product usage data and analytics to Liquibase. + */ + private Boolean analyticsEnabled; + + /** + * Liquibase Pro license key. + */ + private String licenseKey; + public String getChangeLog() { return this.changeLog; } @@ -331,6 +341,22 @@ public class LiquibaseProperties { this.uiService = uiService; } + public Boolean getAnalyticsEnabled() { + return this.analyticsEnabled; + } + + public void setAnalyticsEnabled(Boolean analyticsEnabled) { + this.analyticsEnabled = analyticsEnabled; + } + + public String getLicenseKey() { + return this.licenseKey; + } + + public void setLicenseKey(String licenseKey) { + this.licenseKey = licenseKey; + } + /** * Enumeration of types of summary to show. Values are the same as those on * {@link UpdateSummaryEnum}. To maximize backwards compatibility, the Liquibase enum 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 87acfb7078c..fdbbe1e3c86 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 @@ -1,5 +1,5 @@ /* - * Copyright 2012-2024 the original author or authors. + * Copyright 2012-2025 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -541,6 +541,24 @@ class LiquibaseAutoConfigurationTests { .run(assertLiquibase((liquibase) -> assertThat(liquibase.getCustomizer()).isNotNull())); } + @Test + void whenAnalyticsEnabledIsFalseThenSpringLiquibaseHasAnalyticsDisabled() { + this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class) + .withPropertyValues("spring.liquibase.analytics-enabled=false") + .run((context) -> assertThat(context.getBean(SpringLiquibase.class)) + .extracting(SpringLiquibase::getAnalyticsEnabled) + .isEqualTo(Boolean.FALSE)); + } + + @Test + void whenLicenseKeyIsSetThenSpringLiquibaseHasLicenseKey() { + this.contextRunner.withUserConfiguration(EmbeddedDataSourceConfiguration.class) + .withPropertyValues("spring.liquibase.license-key=a1b2c3d4") + .run((context) -> assertThat(context.getBean(SpringLiquibase.class)) + .extracting(SpringLiquibase::getLicenseKey) + .isEqualTo("a1b2c3d4")); + } + private ContextConsumer assertLiquibase(Consumer consumer) { return (context) -> { assertThat(context).hasSingleBean(SpringLiquibase.class); diff --git a/spring-boot-project/spring-boot-dependencies/build.gradle b/spring-boot-project/spring-boot-dependencies/build.gradle index 69189ad0ee1..03d64008a46 100644 --- a/spring-boot-project/spring-boot-dependencies/build.gradle +++ b/spring-boot-project/spring-boot-dependencies/build.gradle @@ -1203,7 +1203,7 @@ bom { releaseNotes("https://github.com/lettuce-io/lettuce-core/releases/tag/{version}") } } - library("Liquibase", "4.30.0") { + library("Liquibase", "4.31.0") { group("org.liquibase") { modules = [ "liquibase-cdi",