Add AOT-generated classes to classpath of AOT JavaCompile tasks
See gh-32304
This commit is contained in:
parent
421943f3cf
commit
867c49337a
|
|
@ -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> {
|
|||
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> {
|
|||
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…
Reference in New Issue