Browse Source

Add AOT-generated classes to classpath of AOT JavaCompile tasks

See gh-32304
pull/32374/head
Andy Wilkinson 3 years ago
parent
commit
867c49337a
  1. 9
      spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SpringBootAotPlugin.java

9
spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/SpringBootAotPlugin.java

@ -33,6 +33,7 @@ import org.gradle.api.provider.Provider; @@ -33,6 +33,7 @@ import org.gradle.api.provider.Provider;
import org.gradle.api.tasks.SourceSet;
import org.gradle.api.tasks.SourceSetContainer;
import org.gradle.api.tasks.TaskProvider;
import org.gradle.api.tasks.compile.JavaCompile;
import org.springframework.boot.gradle.tasks.aot.AbstractAot;
import org.springframework.boot.gradle.tasks.aot.ProcessAot;
@ -115,13 +116,16 @@ public class SpringBootAotPlugin implements Plugin<Project> { @@ -115,13 +116,16 @@ public class SpringBootAotPlugin implements Plugin<Project> {
private void registerProcessAotTask(Project project, SourceSet aotSourceSet) {
TaskProvider<ResolveMainClassName> resolveMainClassName = project.getTasks()
.named(SpringBootPlugin.RESOLVE_MAIN_CLASS_NAME_TASK_NAME, ResolveMainClassName.class);
Provider<Directory> aotClasses = project.getLayout().getBuildDirectory().dir("generated/aotClasses");
TaskProvider<ProcessAot> processAot = project.getTasks().register(PROCESS_AOT_TASK_NAME, ProcessAot.class,
(task) -> {
configureAotTask(project, aotSourceSet, task,
project.getLayout().getBuildDirectory().dir("generated/aotClasses"));
configureAotTask(project, aotSourceSet, task, aotClasses);
task.getApplicationClass()
.set(resolveMainClassName.flatMap(ResolveMainClassName::readMainClassName));
});
project.getTasks().named(aotSourceSet.getCompileJavaTaskName(), JavaCompile.class).configure(
(javaCompile) -> javaCompile.setClasspath(javaCompile.getClasspath().plus(project.files(aotClasses))));
aotSourceSet.getOutput().dir(aotClasses);
configureDependsOn(project, aotSourceSet, processAot);
}
@ -133,7 +137,6 @@ public class SpringBootAotPlugin implements Plugin<Project> { @@ -133,7 +137,6 @@ public class SpringBootAotPlugin implements Plugin<Project> {
task.getClassesDir().set(generatedClasses);
task.getGroupId().set(project.provider(() -> String.valueOf(project.getGroup())));
task.getArtifactId().set(project.provider(() -> project.getName()));
sourceSet.getOutput().dir(generatedClasses);
}
private void configureDependsOn(Project project, SourceSet aotSourceSet,

Loading…
Cancel
Save