mirror of
https://github.com/spring-projects/spring-boot.git
synced 2026-09-17 12:09:16 +00:00
Merge branch '3.5.x'
Closes gh-48229
This commit is contained in:
+40
-23
@@ -16,17 +16,17 @@
|
||||
|
||||
package org.springframework.boot.build.architecture;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Collections;
|
||||
|
||||
import org.gradle.api.Plugin;
|
||||
import org.gradle.api.Project;
|
||||
import org.gradle.api.Task;
|
||||
import org.gradle.api.plugins.JavaPlugin;
|
||||
import org.gradle.api.plugins.JavaPluginExtension;
|
||||
import org.gradle.api.tasks.SourceSet;
|
||||
import org.gradle.api.tasks.TaskProvider;
|
||||
import org.gradle.api.tasks.compile.JavaCompile;
|
||||
import org.gradle.language.base.plugins.LifecycleBasePlugin;
|
||||
import org.jetbrains.kotlin.gradle.tasks.KotlinCompileTool;
|
||||
|
||||
import org.springframework.util.StringUtils;
|
||||
|
||||
@@ -46,28 +46,45 @@ public class ArchitecturePlugin implements Plugin<Project> {
|
||||
|
||||
private void registerTasks(Project project, ArchitectureCheckExtension extension) {
|
||||
JavaPluginExtension javaPluginExtension = project.getExtensions().getByType(JavaPluginExtension.class);
|
||||
List<TaskProvider<ArchitectureCheck>> packageTangleChecks = new ArrayList<>();
|
||||
for (SourceSet sourceSet : javaPluginExtension.getSourceSets()) {
|
||||
TaskProvider<ArchitectureCheck> checkPackageTangles = project.getTasks()
|
||||
.register("checkArchitecture" + StringUtils.capitalize(sourceSet.getName()), ArchitectureCheck.class,
|
||||
(task) -> {
|
||||
task.getSourceSet().set(sourceSet.getName());
|
||||
task.getCompileClasspath().from(sourceSet.getCompileClasspath());
|
||||
task.setClasses(sourceSet.getOutput().getClassesDirs());
|
||||
task.getResourcesDirectory().set(sourceSet.getOutput().getResourcesDir());
|
||||
task.dependsOn(sourceSet.getProcessResourcesTaskName());
|
||||
task.setDescription("Checks the architecture of the classes of the " + sourceSet.getName()
|
||||
+ " source set.");
|
||||
task.setGroup(LifecycleBasePlugin.VERIFICATION_GROUP);
|
||||
task.getNullMarkedEnabled().set(extension.getNullMarked().getEnabled());
|
||||
task.getNullMarkedIgnoredPackages().set(extension.getNullMarked().getIgnoredPackages());
|
||||
});
|
||||
packageTangleChecks.add(checkPackageTangles);
|
||||
}
|
||||
if (!packageTangleChecks.isEmpty()) {
|
||||
TaskProvider<Task> checkTask = project.getTasks().named(LifecycleBasePlugin.CHECK_TASK_NAME);
|
||||
checkTask.configure((check) -> check.dependsOn(packageTangleChecks));
|
||||
registerArchitectureCheck(sourceSet, "java", project).configure((task) -> {
|
||||
task.setClasses(project.files(project.getTasks()
|
||||
.named(sourceSet.getCompileTaskName("java"), JavaCompile.class)
|
||||
.flatMap((compile) -> compile.getDestinationDirectory())));
|
||||
task.getNullMarkedEnabled().set(extension.getNullMarked().getEnabled());
|
||||
task.getNullMarkedIgnoredPackages().set(extension.getNullMarked().getIgnoredPackages());
|
||||
});
|
||||
project.getPlugins()
|
||||
.withId("org.jetbrains.kotlin.jvm",
|
||||
(kotlinPlugin) -> registerArchitectureCheck(sourceSet, "kotlin", project).configure((task) -> {
|
||||
task.setClasses(project.files(project.getTasks()
|
||||
.named(sourceSet.getCompileTaskName("kotlin"), KotlinCompileTool.class)
|
||||
.flatMap((compile) -> compile.getDestinationDirectory())));
|
||||
task.getNullMarkedEnabled().set(false);
|
||||
task.getNullMarkedIgnoredPackages().set(Collections.emptySet());
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
private TaskProvider<ArchitectureCheck> registerArchitectureCheck(SourceSet sourceSet, String language,
|
||||
Project project) {
|
||||
TaskProvider<ArchitectureCheck> checkArchitecture = project.getTasks()
|
||||
.register(
|
||||
"checkArchitecture"
|
||||
+ StringUtils.capitalize(sourceSet.getName() + StringUtils.capitalize(language)),
|
||||
ArchitectureCheck.class, (task) -> {
|
||||
task.getSourceSet().set(sourceSet.getName());
|
||||
task.getCompileClasspath().from(sourceSet.getCompileClasspath());
|
||||
task.getResourcesDirectory().set(sourceSet.getOutput().getResourcesDir());
|
||||
task.dependsOn(sourceSet.getProcessResourcesTaskName());
|
||||
task.setDescription("Checks the architecture of the " + language + " classes of the "
|
||||
+ sourceSet.getName() + " source set.");
|
||||
task.setGroup(LifecycleBasePlugin.VERIFICATION_GROUP);
|
||||
});
|
||||
project.getTasks()
|
||||
.named(LifecycleBasePlugin.CHECK_TASK_NAME)
|
||||
.configure((check) -> check.dependsOn(checkArchitecture));
|
||||
return checkArchitecture;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+1
-1
@@ -423,7 +423,7 @@ class ArchitectureCheckTests {
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "checkArchitecture" + StringUtils.capitalize(this.sourceSetName);
|
||||
return "checkArchitecture" + StringUtils.capitalize(this.sourceSetName) + "Java";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@ dependencies {
|
||||
}
|
||||
|
||||
tasks.configureEach {
|
||||
if ("checkArchitectureMain".equals(it.name)) {
|
||||
if ("checkArchitectureMainJava".equals(it.name)) {
|
||||
prohibitObjectsRequireNonNull = false
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user