Stop configuring AOT-generated classes as output of AOT source set
Closes gh-32940
This commit is contained in:
parent
2bb9b2640e
commit
0103e24bbb
|
@ -27,6 +27,7 @@ import org.gradle.api.Action;
|
||||||
import org.gradle.api.Plugin;
|
import org.gradle.api.Plugin;
|
||||||
import org.gradle.api.Project;
|
import org.gradle.api.Project;
|
||||||
import org.gradle.api.artifacts.Configuration;
|
import org.gradle.api.artifacts.Configuration;
|
||||||
|
import org.gradle.api.file.FileCollection;
|
||||||
import org.gradle.api.plugins.ExtensionAware;
|
import org.gradle.api.plugins.ExtensionAware;
|
||||||
import org.gradle.api.plugins.JavaPlugin;
|
import org.gradle.api.plugins.JavaPlugin;
|
||||||
import org.gradle.api.plugins.JavaPluginExtension;
|
import org.gradle.api.plugins.JavaPluginExtension;
|
||||||
|
@ -69,8 +70,9 @@ class NativeImagePluginAction implements PluginApplicationAction {
|
||||||
|
|
||||||
private void configureMainNativeBinaryClasspath(Project project, SourceSetContainer sourceSets,
|
private void configureMainNativeBinaryClasspath(Project project, SourceSetContainer sourceSets,
|
||||||
GraalVMExtension graalVmExtension) {
|
GraalVMExtension graalVmExtension) {
|
||||||
SourceSetOutput output = sourceSets.getByName(SpringBootAotPlugin.AOT_SOURCE_SET_NAME).getOutput();
|
FileCollection runtimeClasspath = sourceSets.getByName(SpringBootAotPlugin.AOT_SOURCE_SET_NAME)
|
||||||
graalVmExtension.getBinaries().getByName(NativeImagePlugin.NATIVE_MAIN_EXTENSION).classpath(output);
|
.getRuntimeClasspath();
|
||||||
|
graalVmExtension.getBinaries().getByName(NativeImagePlugin.NATIVE_MAIN_EXTENSION).classpath(runtimeClasspath);
|
||||||
Configuration nativeImageClasspath = project.getConfigurations().getByName("nativeImageClasspath");
|
Configuration nativeImageClasspath = project.getConfigurations().getByName("nativeImageClasspath");
|
||||||
nativeImageClasspath.setExtendsFrom(removeDevelopmentOnly(nativeImageClasspath.getExtendsFrom()));
|
nativeImageClasspath.setExtendsFrom(removeDevelopmentOnly(nativeImageClasspath.getExtendsFrom()));
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,8 +89,7 @@ public class SpringBootAotPlugin implements Plugin<Project> {
|
||||||
return sourceSets.create(newSourceSetName, (sourceSet) -> {
|
return sourceSets.create(newSourceSetName, (sourceSet) -> {
|
||||||
sourceSet.getJava().setSrcDirs(List.of("build/generated/" + newSourceSetName + "Sources"));
|
sourceSet.getJava().setSrcDirs(List.of("build/generated/" + newSourceSetName + "Sources"));
|
||||||
sourceSet.getResources().setSrcDirs(List.of("build/generated/" + newSourceSetName + "Resources"));
|
sourceSet.getResources().setSrcDirs(List.of("build/generated/" + newSourceSetName + "Resources"));
|
||||||
project.getDependencies().add(existingSourceSet.getRuntimeClasspathConfigurationName(),
|
existingSourceSet.setRuntimeClasspath(existingSourceSet.getRuntimeClasspath().plus(sourceSet.getOutput()));
|
||||||
project.files(sourceSet.getOutput()));
|
|
||||||
project.getConfigurations().getByName(sourceSet.getCompileClasspathConfigurationName())
|
project.getConfigurations().getByName(sourceSet.getCompileClasspathConfigurationName())
|
||||||
.attributes((attributes) -> {
|
.attributes((attributes) -> {
|
||||||
configureClassesAndResourcesLibraryElementsAttribute(project, attributes);
|
configureClassesAndResourcesLibraryElementsAttribute(project, attributes);
|
||||||
|
@ -116,6 +115,7 @@ public class SpringBootAotPlugin implements Plugin<Project> {
|
||||||
Provider<Directory> aotClasses = project.getLayout().getBuildDirectory().dir("generated/aotClasses");
|
Provider<Directory> aotClasses = project.getLayout().getBuildDirectory().dir("generated/aotClasses");
|
||||||
Configuration aotClasspath = createAotProcessingClasspath(project, PROCESS_AOT_TASK_NAME, mainSourceSet);
|
Configuration aotClasspath = createAotProcessingClasspath(project, PROCESS_AOT_TASK_NAME, mainSourceSet);
|
||||||
project.getDependencies().add(aotClasspath.getName(), project.files(mainSourceSet.getOutput()));
|
project.getDependencies().add(aotClasspath.getName(), project.files(mainSourceSet.getOutput()));
|
||||||
|
mainSourceSet.setRuntimeClasspath(mainSourceSet.getRuntimeClasspath().plus(project.files(aotClasses)));
|
||||||
Configuration compileClasspath = project.getConfigurations()
|
Configuration compileClasspath = project.getConfigurations()
|
||||||
.getByName(aotSourceSet.getCompileClasspathConfigurationName());
|
.getByName(aotSourceSet.getCompileClasspathConfigurationName());
|
||||||
compileClasspath.extendsFrom(aotClasspath);
|
compileClasspath.extendsFrom(aotClasspath);
|
||||||
|
@ -127,7 +127,6 @@ public class SpringBootAotPlugin implements Plugin<Project> {
|
||||||
task.setClasspath(aotClasspath);
|
task.setClasspath(aotClasspath);
|
||||||
});
|
});
|
||||||
project.getDependencies().add(aotSourceSet.getImplementationConfigurationName(), project.files(aotClasses));
|
project.getDependencies().add(aotSourceSet.getImplementationConfigurationName(), project.files(aotClasses));
|
||||||
aotSourceSet.getOutput().dir(aotClasses);
|
|
||||||
configureDependsOn(project, aotSourceSet, processAot);
|
configureDependsOn(project, aotSourceSet, processAot);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -172,20 +171,21 @@ public class SpringBootAotPlugin implements Plugin<Project> {
|
||||||
SourceSet testSourceSet) {
|
SourceSet testSourceSet) {
|
||||||
Provider<Directory> aotTestClasses = project.getLayout().getBuildDirectory().dir("generated/aotTestClasses");
|
Provider<Directory> aotTestClasses = project.getLayout().getBuildDirectory().dir("generated/aotTestClasses");
|
||||||
Configuration aotClasspath = createAotProcessingClasspath(project, PROCESS_TEST_AOT_TASK_NAME, testSourceSet);
|
Configuration aotClasspath = createAotProcessingClasspath(project, PROCESS_TEST_AOT_TASK_NAME, testSourceSet);
|
||||||
|
project.getDependencies().add(aotClasspath.getName(), project.files(mainSourceSet.getOutput()));
|
||||||
|
project.getDependencies().add(aotClasspath.getName(), project.files(testSourceSet.getOutput()));
|
||||||
|
testSourceSet.setRuntimeClasspath(testSourceSet.getRuntimeClasspath().plus(project.files(aotTestClasses)));
|
||||||
Configuration compileClasspath = project.getConfigurations()
|
Configuration compileClasspath = project.getConfigurations()
|
||||||
.getByName(aotTestSourceSet.getCompileClasspathConfigurationName());
|
.getByName(aotTestSourceSet.getCompileClasspathConfigurationName());
|
||||||
compileClasspath.extendsFrom(aotClasspath);
|
compileClasspath.extendsFrom(aotClasspath);
|
||||||
TaskProvider<ProcessTestAot> processTestAot = project.getTasks().register(PROCESS_TEST_AOT_TASK_NAME,
|
TaskProvider<ProcessTestAot> processTestAot = project.getTasks().register(PROCESS_TEST_AOT_TASK_NAME,
|
||||||
ProcessTestAot.class, (task) -> {
|
ProcessTestAot.class, (task) -> {
|
||||||
configureAotTask(project, aotTestSourceSet, task, aotTestClasses, testSourceSet);
|
configureAotTask(project, aotTestSourceSet, task, aotTestClasses, testSourceSet);
|
||||||
task.setClasspath(project.getObjects().fileCollection().from(aotClasspath,
|
task.setClasspath(aotClasspath);
|
||||||
mainSourceSet.getOutput(), testSourceSet.getOutput()));
|
|
||||||
task.setTestRuntimeClasspath(
|
task.setTestRuntimeClasspath(
|
||||||
project.getConfigurations().getByName(testSourceSet.getImplementationConfigurationName()));
|
project.getConfigurations().getByName(testSourceSet.getImplementationConfigurationName()));
|
||||||
});
|
});
|
||||||
project.getDependencies().add(aotTestSourceSet.getImplementationConfigurationName(),
|
project.getDependencies().add(aotTestSourceSet.getImplementationConfigurationName(),
|
||||||
project.files(aotTestClasses));
|
project.files(aotTestClasses));
|
||||||
aotTestSourceSet.getOutput().dir(aotTestClasses);
|
|
||||||
configureDependsOn(project, aotTestSourceSet, processTestAot);
|
configureDependsOn(project, aotTestSourceSet, processTestAot);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue