diff --git a/buildSrc/src/main/java/org/springframework/boot/build/JavaConventions.java b/buildSrc/src/main/java/org/springframework/boot/build/JavaConventions.java index 4c552e876aa..e2268639e5a 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/JavaConventions.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/JavaConventions.java @@ -38,11 +38,19 @@ import org.gradle.api.GradleException; import org.gradle.api.JavaVersion; import org.gradle.api.Project; import org.gradle.api.Task; +import org.gradle.api.artifacts.ComponentMetadataDetails; import org.gradle.api.artifacts.Configuration; import org.gradle.api.artifacts.ConfigurationContainer; import org.gradle.api.artifacts.Dependency; import org.gradle.api.artifacts.DependencySet; +import org.gradle.api.artifacts.ModuleVersionIdentifier; +import org.gradle.api.attributes.AttributeContainer; +import org.gradle.api.attributes.Bundling; +import org.gradle.api.attributes.Category; +import org.gradle.api.attributes.DocsType; +import org.gradle.api.attributes.Usage; import org.gradle.api.file.FileTreeElement; +import org.gradle.api.model.ObjectFactory; import org.gradle.api.plugins.JavaBasePlugin; import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.plugins.JavaPluginExtension; @@ -159,6 +167,7 @@ class JavaConventions { configureProhibitedDependencyChecks(project); configureFactoriesFilesChecks(project); configureNullability(project); + configureDependencyFixes(project); }); } @@ -397,4 +406,32 @@ class JavaConventions { } } + private void configureDependencyFixes(Project project) { + project.getDependencies().getComponents().all((details) -> { + // https://github.com/spring-projects/spring-framework/issues/37209 + if ("org.springframework".equals(details.getId().getGroup())) { + addDocumentaionVariant(project, details, "javadocElements", DocsType.JAVADOC, "javadoc"); + addDocumentaionVariant(project, details, "sourcesElements", DocsType.SOURCES, "sources"); + } + }); + } + + private void addDocumentaionVariant(Project project, ComponentMetadataDetails details, String name, String docsType, + String classifier) { + ModuleVersionIdentifier id = details.getId(); + String file = "%s-%s-%s.jar".formatted(id.getName(), id.getVersion(), classifier); + details.addVariant(name, (variant) -> { + variant.attributes((attributes) -> addDocumentationAttributes(project, attributes, docsType)); + variant.withFiles((files) -> files.addFile(file)); + }); + } + + private void addDocumentationAttributes(Project project, AttributeContainer attributes, String docsType) { + ObjectFactory objects = project.getObjects(); + attributes.attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage.class, Usage.JAVA_RUNTIME)); + attributes.attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.class, Category.DOCUMENTATION)); + attributes.attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling.class, Bundling.EXTERNAL)); + attributes.attribute(DocsType.DOCS_TYPE_ATTRIBUTE, objects.named(DocsType.class, docsType)); + } + } diff --git a/gradle.properties b/gradle.properties index 17d68d08d8c..0617ae98e49 100644 --- a/gradle.properties +++ b/gradle.properties @@ -13,15 +13,9 @@ graalVersion=25 hamcrestVersion=3.0 jackson2Version=2.21.5 jacksonVersion=3.1.5 -<<<<<<< HEAD -javaFormatVersion=0.0.47 +javaFormatVersion=0.0.48 junitJupiterVersion=6.1.3 kotlinVersion=2.4.10 -======= -javaFormatVersion=0.0.48 -junitJupiterVersion=6.0.3 -kotlinVersion=2.3.21 ->>>>>>> 4.1.x mavenVersion=3.9.13 mockitoVersion=5.23.0 nativeBuildToolsVersion=1.1.8