Publish a runtime variant that supports Java 22

In order to support Java 22, we must use spring-core 6.1.x.
spring-core 6.1.x is a multi-release jar so, in order to support Java
22, a version of Gradle that supports multi-release jars must be
used.

This commit adds a new variant to spring-boot-gradle-plugin for
modern versions of Gradle. When Gradle's plugin API version is 8.7 or
later, we use spring-core 6.1.x. spring-core 6.0.x is used at all
other times.

Closes gh-40074
This commit is contained in:
Andy Wilkinson
2024-04-30 11:54:11 +01:00
parent 6fd3ebb1d9
commit c7ec6080ce
2 changed files with 54 additions and 4 deletions

View File

@@ -83,7 +83,6 @@ class MavenPublishingConventions {
project.getPlugins()
.withType(JavaPlugin.class)
.all((javaPlugin) -> customizeJavaMavenPublication(publication, project));
suppressMavenOptionalFeatureWarnings(publication);
}
private void customizePom(MavenPom pom, Project project) {
@@ -102,7 +101,10 @@ class MavenPublishingConventions {
}
private void customizeJavaMavenPublication(MavenPublication publication, Project project) {
addMavenOptionalFeature(project);
addMavenOptionalFeature(publication, project);
if (publication.getName().equals("pluginMaven")) {
return;
}
publication.versionMapping((strategy) -> strategy.usage(Usage.JAVA_API, (mappingStrategy) -> mappingStrategy
.fromResolutionOf(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME)));
publication.versionMapping(
@@ -112,9 +114,10 @@ class MavenPublishingConventions {
/**
* Add a feature that allows maven plugins to declare optional dependencies that
* appear in the POM. This is required to make m2e in Eclipse happy.
* @param publication the project's Maven publication
* @param project the project to add the feature to
*/
private void addMavenOptionalFeature(Project project) {
private void addMavenOptionalFeature(MavenPublication publication, Project project) {
JavaPluginExtension extension = project.getExtensions().getByType(JavaPluginExtension.class);
extension.registerFeature("mavenOptional",
(feature) -> feature.usingSourceSet(extension.getSourceSets().getByName("main")));
@@ -123,6 +126,7 @@ class MavenPublishingConventions {
javaComponent.addVariantsFromConfiguration(
project.getConfigurations().findByName("mavenOptionalRuntimeElements"),
ConfigurationVariantDetails::mapToOptional);
suppressMavenOptionalFeatureWarnings(publication);
}
private void suppressMavenOptionalFeatureWarnings(MavenPublication publication) {