Support file-based reachability metadata repositories

See gh-32408
This commit is contained in:
Andy Wilkinson
2022-09-20 14:06:18 +01:00
parent 8323f24ccc
commit e8aa5680d6
13 changed files with 776 additions and 3 deletions

View File

@@ -32,6 +32,7 @@ import org.junit.jupiter.api.TestTemplate;
import org.springframework.boot.gradle.junit.GradleCompatibility;
import org.springframework.boot.testsupport.gradle.testkit.GradleBuild;
import org.springframework.util.FileSystemUtils;
import static org.assertj.core.api.Assertions.assertThat;
@@ -68,6 +69,24 @@ class NativeImagePluginActionIntegrationTests {
"META-INF/native-image/org.jline/jline/3.21.0/resource-config.json");
}
@TestTemplate
void reachabilityMetadataConfigurationFilesFromFileRepositoryAreCopiedToJar() throws IOException {
writeDummyAotProcessorMainClass();
FileSystemUtils.copyRecursively(new File("src/test/resources/reachability-metadata-repository"),
new File(this.gradleBuild.getProjectDir(), "reachability-metadata-repository"));
BuildResult result = this.gradleBuild.build("bootJar");
assertThat(result.task(":bootJar").getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
File buildLibs = new File(this.gradleBuild.getProjectDir(), "build/libs");
File jarFile = new File(buildLibs, this.gradleBuild.getProjectDir().getName() + ".jar");
assertThat(buildLibs.listFiles()).contains(jarFile);
assertThat(getEntryNames(jarFile)).contains(
"META-INF/native-image/ch.qos.logback/logback-classic/1.2.11/reflect-config.json",
"META-INF/native-image/org.jline/jline/3.21.0/jni-config.json",
"META-INF/native-image/org.jline/jline/3.21.0/proxy-config.json",
"META-INF/native-image/org.jline/jline/3.21.0/reflect-config.json",
"META-INF/native-image/org.jline/jline/3.21.0/resource-config.json");
}
private void writeDummyAotProcessorMainClass() {
File examplePackage = new File(this.gradleBuild.getProjectDir(), "src/main/java/org/springframework/boot");
examplePackage.mkdirs();