diff --git a/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/MetadataCollector.java b/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/MetadataCollector.java index b9e4f0e3c6..ea06d3091b 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/MetadataCollector.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/MetadataCollector.java @@ -111,7 +111,7 @@ public class MetadataCollector { } private boolean deletedInCurrentBuild(String sourceType) { - return this.processingEnvironment.getElementUtils().getTypeElement(sourceType) == null; + return this.processingEnvironment.getElementUtils().getTypeElement(sourceType.replace('$', '.')) == null; } private boolean processedInCurrentBuild(String sourceType) { diff --git a/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/IncrementalBuildMetadataGenerationTests.java b/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/IncrementalBuildMetadataGenerationTests.java index dd7b1b6e78..8e2f91ae33 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/IncrementalBuildMetadataGenerationTests.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/IncrementalBuildMetadataGenerationTests.java @@ -23,6 +23,7 @@ import org.springframework.boot.configurationprocessor.metadata.Metadata; import org.springframework.boot.configurationsample.incremental.BarProperties; import org.springframework.boot.configurationsample.incremental.FooProperties; import org.springframework.boot.configurationsample.incremental.RenamedBarProperties; +import org.springframework.boot.configurationsample.simple.ClassWithNestedProperties; import static org.assertj.core.api.Assertions.assertThat; @@ -92,4 +93,12 @@ class IncrementalBuildMetadataGenerationTests extends AbstractMetadataGeneration .has(Metadata.withProperty("bar.counter").withDefaultValue(0).fromSource(RenamedBarProperties.class)); } + @Test + void incrementalBuildDoesNotDeleteItems() throws Exception { + TestProject project = new TestProject(this.tempDir, ClassWithNestedProperties.class, FooProperties.class); + ConfigurationMetadata initialMetadata = project.fullBuild(); + ConfigurationMetadata updatedMetadata = project.incrementalBuild(FooProperties.class); + assertThat(initialMetadata.getItems()).isEqualTo(updatedMetadata.getItems()); + } + }