From 1c94f835c76432c0bcdbe1781539dfd8e11d1f5e Mon Sep 17 00:00:00 2001 From: Stephane Nicoll Date: Tue, 7 Jun 2022 08:48:08 +0200 Subject: [PATCH] Copy AOT-generated classes Closes gh-31245 --- .../boot/maven/AotGenerateMojo.java | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/AotGenerateMojo.java b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/AotGenerateMojo.java index c670d9e6fc2..09bf7912795 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/AotGenerateMojo.java +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/src/main/java/org/springframework/boot/maven/AotGenerateMojo.java @@ -23,6 +23,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardCopyOption; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Locale; import java.util.Map; @@ -82,7 +83,9 @@ public class AotGenerateMojo extends AbstractRunMojo { try { generateAotAssets(workingDirectory, startClassName, environmentVariables); compileSourceFiles(); - copyNativeConfiguration(this.generatedResources.toPath()); + copyAll(this.generatedResources.toPath().resolve("META-INF/native-image"), + this.classesDirectory.toPath().resolve("META-INF/native-image")); + copyAll(this.generatedClasses.toPath(), this.classesDirectory.toPath()); } catch (Exception ex) { throw new MojoExecutionException(ex.getMessage(), ex); @@ -158,14 +161,13 @@ public class AotGenerateMojo extends AbstractRunMojo { } } - private void copyNativeConfiguration(Path generatedResources) throws IOException { - Path targetDirectory = this.classesDirectory.toPath().resolve("META-INF/native-image"); - Path sourceDirectory = generatedResources.resolve("META-INF/native-image"); - List files = Files.walk(sourceDirectory).filter(Files::isRegularFile).toList(); + private void copyAll(Path from, Path to) throws IOException { + List files = (Files.exists(from)) ? Files.walk(from).filter(Files::isRegularFile).toList() + : Collections.emptyList(); for (Path file : files) { - String relativeFileName = file.subpath(sourceDirectory.getNameCount(), file.getNameCount()).toString(); - getLog().debug("Copying '" + relativeFileName + "' to " + targetDirectory); - Path target = targetDirectory.resolve(relativeFileName); + String relativeFileName = file.subpath(from.getNameCount(), file.getNameCount()).toString(); + getLog().debug("Copying '" + relativeFileName + "' to " + to); + Path target = to.resolve(relativeFileName); Files.createDirectories(target.getParent()); Files.copy(file, target, StandardCopyOption.REPLACE_EXISTING); }