mirror of
https://github.com/spring-projects/spring-boot.git
synced 2026-10-09 02:49:02 +00:00
Merge branch '4.0.x'
Closes gh-48822 in 4.1.x Closes gh-48824
This commit is contained in:
+17
-2
@@ -37,6 +37,7 @@ import org.gradle.api.file.DirectoryProperty;
|
||||
import org.gradle.api.file.FileCollection;
|
||||
import org.gradle.api.provider.SetProperty;
|
||||
import org.gradle.api.tasks.Classpath;
|
||||
import org.gradle.api.tasks.Input;
|
||||
import org.gradle.api.tasks.OutputDirectory;
|
||||
import org.gradle.api.tasks.TaskAction;
|
||||
import org.gradle.api.tasks.VerificationException;
|
||||
@@ -113,16 +114,20 @@ public abstract class CheckAutoConfigurationClasses extends AutoConfigurationImp
|
||||
@OutputDirectory
|
||||
public abstract DirectoryProperty getOutputDirectory();
|
||||
|
||||
@Input
|
||||
public abstract SetProperty<String> getOmittedFromImports();
|
||||
|
||||
@TaskAction
|
||||
void execute() {
|
||||
Map<String, List<String>> problems = new TreeMap<>();
|
||||
Set<String> optionalOnlyClassNames = new HashSet<>(this.optionalDependencyClassNames.get());
|
||||
Set<String> requiredClassNames = this.requiredDependencyClassNames.get();
|
||||
optionalOnlyClassNames.removeAll(requiredClassNames);
|
||||
List<String> imports = loadImports();
|
||||
classFiles().forEach((classFile) -> {
|
||||
AutoConfigurationClass autoConfigurationClass = AutoConfigurationClass.of(classFile);
|
||||
if (autoConfigurationClass != null) {
|
||||
check(autoConfigurationClass, optionalOnlyClassNames, requiredClassNames, problems);
|
||||
check(autoConfigurationClass, optionalOnlyClassNames, requiredClassNames, imports, problems);
|
||||
}
|
||||
});
|
||||
File outputFile = getOutputDirectory().file("failure-report.txt").get().getAsFile();
|
||||
@@ -153,11 +158,21 @@ public abstract class CheckAutoConfigurationClasses extends AutoConfigurationImp
|
||||
}
|
||||
|
||||
private void check(AutoConfigurationClass autoConfigurationClass, Set<String> optionalOnlyClassNames,
|
||||
Set<String> requiredClassNames, Map<String, List<String>> problems) {
|
||||
Set<String> requiredClassNames, List<String> imports, Map<String, List<String>> problems) {
|
||||
if (!autoConfigurationClass.name().endsWith("AutoConfiguration")) {
|
||||
problems.computeIfAbsent(autoConfigurationClass.name(), (name) -> new ArrayList<>())
|
||||
.add("Name of a class annotated with @AutoConfiguration should end with AutoConfiguration");
|
||||
}
|
||||
if (!getOmittedFromImports().getOrElse(Collections.emptySet()).contains(autoConfigurationClass.name())
|
||||
&& !imports.contains(autoConfigurationClass.name())) {
|
||||
problems.computeIfAbsent(autoConfigurationClass.name(), (name) -> new ArrayList<>())
|
||||
.add("Class is not registered in AutoConfiguration.imports");
|
||||
}
|
||||
if (getOmittedFromImports().getOrElse(requiredClassNames).contains(autoConfigurationClass.name())
|
||||
&& imports.contains(autoConfigurationClass.name())) {
|
||||
problems.computeIfAbsent(autoConfigurationClass.name(), (name) -> new ArrayList<>())
|
||||
.add("Class should not be registered in AutoConfiguration.imports");
|
||||
}
|
||||
autoConfigurationClass.before().forEach((before) -> {
|
||||
if (optionalOnlyClassNames.contains(before)) {
|
||||
problems.computeIfAbsent(autoConfigurationClass.name(), (name) -> new ArrayList<>())
|
||||
|
||||
@@ -40,3 +40,9 @@ dependencies {
|
||||
tasks.named("compileTestJava") {
|
||||
options.nullability.checking = "tests"
|
||||
}
|
||||
|
||||
tasks.named("checkAutoConfigurationClasses") {
|
||||
omittedFromImports = [
|
||||
"org.springframework.boot.gson.autoconfigure.GsonTesterTestAutoConfiguration"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -44,3 +44,9 @@ dependencies {
|
||||
tasks.named("compileTestJava") {
|
||||
options.nullability.checking = "tests"
|
||||
}
|
||||
|
||||
tasks.named("checkAutoConfigurationClasses") {
|
||||
omittedFromImports = [
|
||||
"org.springframework.boot.jackson.autoconfigure.JacksonTesterTestAutoConfiguration"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -50,3 +50,9 @@ dependencies {
|
||||
tasks.named("compileTestJava") {
|
||||
options.nullability.checking = "tests"
|
||||
}
|
||||
|
||||
tasks.named("checkAutoConfigurationClasses") {
|
||||
omittedFromImports = [
|
||||
"org.springframework.boot.jackson2.autoconfigure.Jackson2TesterTestAutoConfiguration"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -41,3 +41,9 @@ dependencies {
|
||||
tasks.named("compileTestJava") {
|
||||
options.nullability.checking = "tests"
|
||||
}
|
||||
|
||||
tasks.named("checkAutoConfigurationClasses") {
|
||||
omittedFromImports = [
|
||||
"org.springframework.boot.jsonb.autoconfigure.JsonbTesterTestAutoConfiguration"
|
||||
]
|
||||
}
|
||||
|
||||
+1
@@ -22,6 +22,7 @@ org.springframework.boot.micrometer.metrics.autoconfigure.export.statsd.StatsdMe
|
||||
org.springframework.boot.micrometer.metrics.autoconfigure.jvm.JvmMetricsAutoConfiguration
|
||||
org.springframework.boot.micrometer.metrics.autoconfigure.logging.log4j2.Log4J2MetricsAutoConfiguration
|
||||
org.springframework.boot.micrometer.metrics.autoconfigure.logging.logback.LogbackMetricsAutoConfiguration
|
||||
org.springframework.boot.micrometer.metrics.autoconfigure.ssl.SslMetricsAutoConfiguration
|
||||
org.springframework.boot.micrometer.metrics.autoconfigure.startup.StartupTimeMetricsListenerAutoConfiguration
|
||||
org.springframework.boot.micrometer.metrics.autoconfigure.system.SystemMetricsAutoConfiguration
|
||||
org.springframework.boot.micrometer.metrics.autoconfigure.task.TaskExecutorMetricsAutoConfiguration
|
||||
|
||||
@@ -47,3 +47,10 @@ dependencies {
|
||||
tasks.named("compileTestJava") {
|
||||
options.nullability.checking = "tests"
|
||||
}
|
||||
|
||||
tasks.named("checkAutoConfigurationClasses") {
|
||||
omittedFromImports = [
|
||||
"org.springframework.boot.resttestclient.autoconfigure.RestTestClientAutoConfiguration",
|
||||
"org.springframework.boot.resttestclient.autoconfigure.TestRestTemplateAutoConfiguration"
|
||||
]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user