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