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