Include AOT-generated classes in native test binary
Closes gh-32940
This commit is contained in:
parent
2b29a10d5b
commit
2d5a3eac51
|
|
@ -32,7 +32,6 @@ import org.gradle.api.plugins.ExtensionAware;
|
|||
import org.gradle.api.plugins.JavaPlugin;
|
||||
import org.gradle.api.plugins.JavaPluginExtension;
|
||||
import org.gradle.api.tasks.SourceSetContainer;
|
||||
import org.gradle.api.tasks.SourceSetOutput;
|
||||
|
||||
import org.springframework.boot.gradle.tasks.bundling.BootBuildImage;
|
||||
import org.springframework.boot.gradle.tasks.bundling.BootJar;
|
||||
|
|
@ -60,8 +59,7 @@ class NativeImagePluginAction implements PluginApplicationAction {
|
|||
SourceSetContainer sourceSets = javaPluginExtension.getSourceSets();
|
||||
GraalVMExtension graalVmExtension = configureGraalVmExtension(project);
|
||||
configureMainNativeBinaryClasspath(project, sourceSets, graalVmExtension);
|
||||
configureTestNativeBinaryClasspath(sourceSets, graalVmExtension,
|
||||
SpringBootAotPlugin.AOT_TEST_SOURCE_SET_NAME);
|
||||
configureTestNativeBinaryClasspath(project, sourceSets, graalVmExtension);
|
||||
configureGraalVmReachabilityExtension(graalVmExtension);
|
||||
copyReachabilityMetadataToBootJar(project);
|
||||
configureBootBuildImageToProduceANativeImage(project);
|
||||
|
|
@ -86,10 +84,11 @@ class NativeImagePluginAction implements PluginApplicationAction {
|
|||
return !SpringBootPlugin.DEVELOPMENT_ONLY_CONFIGURATION_NAME.equals(configuration.getName());
|
||||
}
|
||||
|
||||
private void configureTestNativeBinaryClasspath(SourceSetContainer sourceSets, GraalVMExtension graalVmExtension,
|
||||
String sourceSetName) {
|
||||
SourceSetOutput output = sourceSets.getByName(SpringBootAotPlugin.AOT_TEST_SOURCE_SET_NAME).getOutput();
|
||||
graalVmExtension.getBinaries().getByName(NativeImagePlugin.NATIVE_TEST_EXTENSION).classpath(output);
|
||||
private void configureTestNativeBinaryClasspath(Project project, SourceSetContainer sourceSets,
|
||||
GraalVMExtension graalVmExtension) {
|
||||
FileCollection runtimeClasspath = sourceSets.getByName(SpringBootAotPlugin.AOT_TEST_SOURCE_SET_NAME)
|
||||
.getRuntimeClasspath();
|
||||
graalVmExtension.getBinaries().getByName(NativeImagePlugin.NATIVE_TEST_EXTENSION).classpath(runtimeClasspath);
|
||||
}
|
||||
|
||||
private GraalVMExtension configureGraalVmExtension(Project project) {
|
||||
|
|
|
|||
|
|
@ -101,6 +101,24 @@ class NativeImagePluginActionIntegrationTests {
|
|||
assertThat(result.getOutput()).doesNotContain("commons-lang");
|
||||
}
|
||||
|
||||
@TestTemplate
|
||||
void classesGeneratedDuringAotProcessingAreOnTheNativeImageClasspath() {
|
||||
BuildResult result = this.gradleBuild.build("checkNativeImageClasspath");
|
||||
assertThat(result.getOutput()).contains(projectPath("build/classes/java/aot"),
|
||||
projectPath("build/resources/aot"), projectPath("build/generated/aotClasses"));
|
||||
}
|
||||
|
||||
@TestTemplate
|
||||
void classesGeneratedDuringAotTestProcessingAreOnTheTestNativeImageClasspath() {
|
||||
BuildResult result = this.gradleBuild.build("checkTestNativeImageClasspath");
|
||||
assertThat(result.getOutput()).contains(projectPath("build/classes/java/aotTest"),
|
||||
projectPath("build/resources/aotTest"), projectPath("build/generated/aotTestClasses"));
|
||||
}
|
||||
|
||||
private String projectPath(String path) {
|
||||
return new File(this.gradleBuild.getProjectDir(), path).getAbsolutePath();
|
||||
}
|
||||
|
||||
private void writeDummySpringApplicationAotProcessorMainClass() {
|
||||
File examplePackage = new File(this.gradleBuild.getProjectDir(), "src/main/java/org/springframework/boot");
|
||||
examplePackage.mkdirs();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,16 @@
|
|||
plugins {
|
||||
id 'org.springframework.boot' version '{version}'
|
||||
id 'java'
|
||||
}
|
||||
|
||||
apply plugin: 'org.graalvm.buildtools.native'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
task('checkNativeImageClasspath') {
|
||||
doFirst {
|
||||
tasks.nativeCompile.options.get().classpath.each { println it }
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
plugins {
|
||||
id 'org.springframework.boot' version '{version}'
|
||||
id 'java'
|
||||
}
|
||||
|
||||
apply plugin: 'org.graalvm.buildtools.native'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
|
||||
task('checkTestNativeImageClasspath') {
|
||||
doFirst {
|
||||
tasks.nativeTestCompile.options.get().classpath.each { println it }
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue