Merge branch '3.1.x'

Closes gh-37381
This commit is contained in:
Andy Wilkinson 2023-09-14 11:03:25 +01:00
commit 44bc47d96d
3 changed files with 27 additions and 3 deletions

View File

@ -35,6 +35,7 @@ import org.gradle.api.plugins.JavaPlugin;
import org.gradle.api.plugins.JavaPluginExtension;
import org.gradle.api.plugins.PluginContainer;
import org.gradle.api.provider.Provider;
import org.gradle.api.provider.ProviderFactory;
import org.gradle.api.tasks.SourceSet;
import org.gradle.api.tasks.SourceSetContainer;
import org.gradle.api.tasks.TaskProvider;
@ -150,7 +151,7 @@ public class SpringBootAotPlugin implements Plugin<Project> {
task.getArtifactId().set(project.provider(() -> project.getName()));
}
@SuppressWarnings("unchecked")
@SuppressWarnings({ "unchecked", "rawtypes" })
private Configuration createAotProcessingClasspath(Project project, String taskName, SourceSet inputSourceSet) {
Configuration base = project.getConfigurations()
.getByName(inputSourceSet.getRuntimeClasspathConfigurationName());
@ -160,9 +161,11 @@ public class SpringBootAotPlugin implements Plugin<Project> {
classpath.setDescription("Classpath of the " + taskName + " task.");
removeDevelopmentOnly(base.getExtendsFrom()).forEach(classpath::extendsFrom);
classpath.attributes((attributes) -> {
ProviderFactory providers = project.getProviders();
AttributeContainer baseAttributes = base.getAttributes();
for (Attribute<?> attribute : baseAttributes.keySet()) {
attributes.attribute((Attribute<Object>) attribute, baseAttributes.getAttribute(attribute));
for (Attribute attribute : baseAttributes.keySet()) {
attributes.attributeProvider(attribute,
providers.provider(() -> baseAttributes.getAttribute(attribute)));
}
});
});

View File

@ -23,11 +23,14 @@ import java.util.List;
import org.gradle.testkit.runner.TaskOutcome;
import org.junit.jupiter.api.TestTemplate;
import org.junit.jupiter.api.condition.EnabledOnJre;
import org.junit.jupiter.api.condition.JRE;
import org.springframework.boot.gradle.junit.GradleCompatibility;
import org.springframework.boot.testsupport.gradle.testkit.GradleBuild;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatNoException;
/**
* Integration tests for {@link SpringBootAotPlugin}.
@ -121,6 +124,13 @@ class SpringBootAotPluginIntegrationTests {
.isEqualTo(TaskOutcome.NO_SOURCE);
}
// gh-37343
@TestTemplate
@EnabledOnJre(JRE.JAVA_17)
void applyingAotPluginDoesNotPreventConfigurationOfJavaToolchainLanguageVersion() {
assertThatNoException().isThrownBy(() -> this.gradleBuild.build("help").getOutput());
}
private void writeMainClass(String packageName, String className) throws IOException {
File java = new File(this.gradleBuild.getProjectDir(),
"src/main/java/" + packageName.replace(".", "/") + "/" + className + ".java");

View File

@ -0,0 +1,11 @@
plugins {
id 'org.springframework.boot'
id 'org.springframework.boot.aot'
id 'java'
}
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(17))
}
}