Skip to content

Commit 95e62b7

Browse files
Sort the contents of generated imports files
The list of class names generated by annotation processors should be sorted before being written to `AutoConfiguration.imports` and `ManagementContextConfiguration.imports` files to make the build more deterministic. See gh-31228
1 parent 6b3b0dd commit 95e62b7

File tree

3 files changed

+6
-4
lines changed

3 files changed

+6
-4
lines changed

Diff for: spring-boot-project/spring-boot-tools/spring-boot-autoconfigure-processor/src/main/java/org/springframework/boot/autoconfigureprocessor/AbstractImportsAnnotationProcessor.java

+2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.io.Writer;
2222
import java.nio.charset.StandardCharsets;
2323
import java.util.ArrayList;
24+
import java.util.Collections;
2425
import java.util.List;
2526
import java.util.Set;
2627

@@ -74,6 +75,7 @@ private void writeImportsFile() throws IOException {
7475
Filer filer = this.processingEnv.getFiler();
7576
FileObject file = filer.createResource(StandardLocation.CLASS_OUTPUT, "", getImportsFilePath());
7677
try (Writer writer = new OutputStreamWriter(file.openOutputStream(), StandardCharsets.UTF_8)) {
78+
Collections.sort(this.qualifiedClassNames);
7779
for (String className : this.qualifiedClassNames) {
7880
writer.append(className);
7981
writer.append(System.lineSeparator());

Diff for: spring-boot-project/spring-boot-tools/spring-boot-autoconfigure-processor/src/test/java/org/springframework/boot/autoconfigureprocessor/AutoConfigurationImportsAnnotationProcessorTests.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ void createCompiler() throws IOException {
5050

5151
@Test
5252
void annotatedClasses() throws Exception {
53-
List<String> classes = compile(TestAutoConfigurationConfiguration.class,
54-
TestAutoConfigurationOnlyConfiguration.class);
53+
List<String> classes = compile(TestAutoConfigurationOnlyConfiguration.class,
54+
TestAutoConfigurationConfiguration.class);
5555
assertThat(classes).hasSize(2);
5656
assertThat(classes).containsExactly(
5757
"org.springframework.boot.autoconfigureprocessor.TestAutoConfigurationConfiguration",

Diff for: spring-boot-project/spring-boot-tools/spring-boot-autoconfigure-processor/src/test/java/org/springframework/boot/autoconfigureprocessor/ManagementContextConfigurationImportsAnnotationProcessorTests.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ void createCompiler() throws IOException {
5050

5151
@Test
5252
void annotatedClasses() throws Exception {
53-
List<String> classes = compile(TestManagementContextConfigurationOne.class,
54-
TestManagementContextConfigurationTwo.class);
53+
List<String> classes = compile(TestManagementContextConfigurationTwo.class,
54+
TestManagementContextConfigurationOne.class);
5555
assertThat(classes).hasSize(2);
5656
assertThat(classes).containsExactly(
5757
"org.springframework.boot.autoconfigureprocessor.TestManagementContextConfigurationOne",

0 commit comments

Comments
 (0)