mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-08-29 03:06:45 +08:00
Merge pull request #37343 from Eng-Fouad
* gh-37343: Polish "Lazily query attributes when copying from base configuration" Lazily query attributes when copying from base configuration Closes gh-37343
This commit is contained in:
commit
54b6ab00ed
@ -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)));
|
||||
}
|
||||
});
|
||||
});
|
||||
|
@ -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");
|
||||
|
@ -0,0 +1,11 @@
|
||||
plugins {
|
||||
id 'org.springframework.boot'
|
||||
id 'org.springframework.boot.aot'
|
||||
id 'java'
|
||||
}
|
||||
|
||||
java {
|
||||
toolchain {
|
||||
languageVersion.set(JavaLanguageVersion.of(17))
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user