Skip to content

Commit 85bbbc9

Browse files
committed
Merge branch '3.5.x'
Closes gh-48229
2 parents 40453e7 + 01d9351 commit 85bbbc9

File tree

3 files changed

+42
-25
lines changed

3 files changed

+42
-25
lines changed

buildSrc/src/main/java/org/springframework/boot/build/architecture/ArchitecturePlugin.java

Lines changed: 40 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,17 @@
1616

1717
package org.springframework.boot.build.architecture;
1818

19-
import java.util.ArrayList;
20-
import java.util.List;
19+
import java.util.Collections;
2120

2221
import org.gradle.api.Plugin;
2322
import org.gradle.api.Project;
24-
import org.gradle.api.Task;
2523
import org.gradle.api.plugins.JavaPlugin;
2624
import org.gradle.api.plugins.JavaPluginExtension;
2725
import org.gradle.api.tasks.SourceSet;
2826
import org.gradle.api.tasks.TaskProvider;
27+
import org.gradle.api.tasks.compile.JavaCompile;
2928
import org.gradle.language.base.plugins.LifecycleBasePlugin;
29+
import org.jetbrains.kotlin.gradle.tasks.KotlinCompileTool;
3030

3131
import org.springframework.util.StringUtils;
3232

@@ -46,28 +46,45 @@ public void apply(Project project) {
4646

4747
private void registerTasks(Project project, ArchitectureCheckExtension extension) {
4848
JavaPluginExtension javaPluginExtension = project.getExtensions().getByType(JavaPluginExtension.class);
49-
List<TaskProvider<ArchitectureCheck>> packageTangleChecks = new ArrayList<>();
5049
for (SourceSet sourceSet : javaPluginExtension.getSourceSets()) {
51-
TaskProvider<ArchitectureCheck> checkPackageTangles = project.getTasks()
52-
.register("checkArchitecture" + StringUtils.capitalize(sourceSet.getName()), ArchitectureCheck.class,
53-
(task) -> {
54-
task.getSourceSet().set(sourceSet.getName());
55-
task.getCompileClasspath().from(sourceSet.getCompileClasspath());
56-
task.setClasses(sourceSet.getOutput().getClassesDirs());
57-
task.getResourcesDirectory().set(sourceSet.getOutput().getResourcesDir());
58-
task.dependsOn(sourceSet.getProcessResourcesTaskName());
59-
task.setDescription("Checks the architecture of the classes of the " + sourceSet.getName()
60-
+ " source set.");
61-
task.setGroup(LifecycleBasePlugin.VERIFICATION_GROUP);
62-
task.getNullMarkedEnabled().set(extension.getNullMarked().getEnabled());
63-
task.getNullMarkedIgnoredPackages().set(extension.getNullMarked().getIgnoredPackages());
64-
});
65-
packageTangleChecks.add(checkPackageTangles);
66-
}
67-
if (!packageTangleChecks.isEmpty()) {
68-
TaskProvider<Task> checkTask = project.getTasks().named(LifecycleBasePlugin.CHECK_TASK_NAME);
69-
checkTask.configure((check) -> check.dependsOn(packageTangleChecks));
50+
registerArchitectureCheck(sourceSet, "java", project).configure((task) -> {
51+
task.setClasses(project.files(project.getTasks()
52+
.named(sourceSet.getCompileTaskName("java"), JavaCompile.class)
53+
.flatMap((compile) -> compile.getDestinationDirectory())));
54+
task.getNullMarkedEnabled().set(extension.getNullMarked().getEnabled());
55+
task.getNullMarkedIgnoredPackages().set(extension.getNullMarked().getIgnoredPackages());
56+
});
57+
project.getPlugins()
58+
.withId("org.jetbrains.kotlin.jvm",
59+
(kotlinPlugin) -> registerArchitectureCheck(sourceSet, "kotlin", project).configure((task) -> {
60+
task.setClasses(project.files(project.getTasks()
61+
.named(sourceSet.getCompileTaskName("kotlin"), KotlinCompileTool.class)
62+
.flatMap((compile) -> compile.getDestinationDirectory())));
63+
task.getNullMarkedEnabled().set(false);
64+
task.getNullMarkedIgnoredPackages().set(Collections.emptySet());
65+
}));
7066
}
7167
}
7268

69+
private TaskProvider<ArchitectureCheck> registerArchitectureCheck(SourceSet sourceSet, String language,
70+
Project project) {
71+
TaskProvider<ArchitectureCheck> checkArchitecture = project.getTasks()
72+
.register(
73+
"checkArchitecture"
74+
+ StringUtils.capitalize(sourceSet.getName() + StringUtils.capitalize(language)),
75+
ArchitectureCheck.class, (task) -> {
76+
task.getSourceSet().set(sourceSet.getName());
77+
task.getCompileClasspath().from(sourceSet.getCompileClasspath());
78+
task.getResourcesDirectory().set(sourceSet.getOutput().getResourcesDir());
79+
task.dependsOn(sourceSet.getProcessResourcesTaskName());
80+
task.setDescription("Checks the architecture of the " + language + " classes of the "
81+
+ sourceSet.getName() + " source set.");
82+
task.setGroup(LifecycleBasePlugin.VERIFICATION_GROUP);
83+
});
84+
project.getTasks()
85+
.named(LifecycleBasePlugin.CHECK_TASK_NAME)
86+
.configure((check) -> check.dependsOn(checkArchitecture));
87+
return checkArchitecture;
88+
}
89+
7390
}

buildSrc/src/test/java/org/springframework/boot/build/architecture/ArchitectureCheckTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,7 @@ Path getSourceDirectory(Path projectDir) {
423423

424424
@Override
425425
public String toString() {
426-
return "checkArchitecture" + StringUtils.capitalize(this.sourceSetName);
426+
return "checkArchitecture" + StringUtils.capitalize(this.sourceSetName) + "Java";
427427
}
428428

429429
}

loader/spring-boot-loader/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ dependencies {
3232
}
3333

3434
tasks.configureEach {
35-
if ("checkArchitectureMain".equals(it.name)) {
35+
if ("checkArchitectureMainJava".equals(it.name)) {
3636
prohibitObjectsRequireNonNull = false
3737
}
3838
}

0 commit comments

Comments
 (0)