7878import org .gradle .api .plugins .ApplicationPlugin ;
7979import org .gradle .api .plugins .JavaApplication ;
8080import org .gradle .api .plugins .JavaPlugin ;
81+ import org .gradle .api .plugins .JavaPluginConvention ;
8182import org .gradle .api .provider .ListProperty ;
8283import org .gradle .api .provider .Property ;
8384import org .gradle .api .provider .Provider ;
8485import org .gradle .api .tasks .JavaExec ;
8586import org .gradle .api .tasks .SourceSet ;
87+ import org .gradle .api .tasks .SourceSetContainer ;
8688import org .gradle .api .tasks .TaskContainer ;
8789import org .gradle .api .tasks .TaskProvider ;
8890import org .gradle .api .tasks .bundling .AbstractArchiveTask ;
@@ -191,7 +193,8 @@ private void configureJavaProject(Project project, Provider<NativeImageService>
191193
192194 // Register Native Image tasks
193195 TaskContainer tasks = project .getTasks ();
194- configureAutomaticTaskCreation (project , graalExtension , agents , tasks );
196+ JavaPluginConvention javaConvention = project .getConvention ().getPlugin (JavaPluginConvention .class );
197+ configureAutomaticTaskCreation (project , graalExtension , agents , tasks , javaConvention .getSourceSets ());
195198
196199 TaskProvider <BuildNativeImageTask > imageBuilder = tasks .named (NATIVE_COMPILE_TASK_NAME , BuildNativeImageTask .class );
197200 TaskProvider <Task > deprecatedTask = tasks .register (DEPRECATED_NATIVE_BUILD_TASK , t -> {
@@ -206,16 +209,6 @@ private void configureJavaProject(Project project, Provider<NativeImageService>
206209 mainOptions .getAgent ().getInstrumentedTask ().convention (runTask );
207210 });
208211
209- TaskProvider <GenerateResourcesConfigFile > generateResourcesConfig = registerResourcesConfigTask (
210- graalExtension .getGeneratedResourcesDirectory (),
211- mainOptions ,
212- tasks ,
213- transitiveProjectArtifacts (project , JavaPlugin .RUNTIME_CLASSPATH_CONFIGURATION_NAME ),
214- GENERATE_RESOURCES_CONFIG_FILE_TASK_NAME );
215- mainOptions .getConfigurationFileDirectories ().from (generateResourcesConfig .map (t ->
216- t .getOutputFile ().map (f -> f .getAsFile ().getParentFile ())
217- ));
218-
219212 graalExtension .registerTestBinary ("test" , config -> {
220213 config .forTestTask (tasks .named ("test" , Test .class ));
221214 config .usingSourceSet (GradleUtils .findSourceSet (project , SourceSet .TEST_SOURCE_SET_NAME ));
@@ -225,7 +218,8 @@ private void configureJavaProject(Project project, Provider<NativeImageService>
225218 private void configureAutomaticTaskCreation (Project project ,
226219 GraalVMExtension graalExtension ,
227220 Map <String , Provider <Boolean >> agents ,
228- TaskContainer tasks ) {
221+ TaskContainer tasks ,
222+ SourceSetContainer sourceSets ) {
229223 graalExtension .getBinaries ().configureEach (options -> {
230224 String binaryName = options .getName ();
231225 String compileTaskName = deriveTaskName (binaryName , "native" , "Compile" );
@@ -254,6 +248,16 @@ private void configureAutomaticTaskCreation(Project project,
254248 task .getRuntimeArgs ().convention (options .getRuntimeArgs ());
255249 });
256250 configureClasspathJarFor (tasks , options , imageBuilder );
251+ SourceSet sourceSet = "test" .equals (binaryName ) ? sourceSets .getByName (SourceSet .TEST_SOURCE_SET_NAME ) : sourceSets .getByName (SourceSet .MAIN_SOURCE_SET_NAME );
252+ TaskProvider <GenerateResourcesConfigFile > generateResourcesConfig = registerResourcesConfigTask (
253+ graalExtension .getGeneratedResourcesDirectory (),
254+ options ,
255+ tasks ,
256+ transitiveProjectArtifacts (project , sourceSet .getRuntimeClasspathConfigurationName ()),
257+ deriveTaskName (binaryName , "generate" , "ResourcesConfigFile" ));
258+ options .getConfigurationFileDirectories ().from (generateResourcesConfig .map (t ->
259+ t .getOutputFile ().map (f -> f .getAsFile ().getParentFile ())
260+ ));
257261 });
258262 }
259263
@@ -352,16 +356,6 @@ public void registerTestBinary(Project project,
352356 deprecateExtension (project , testOptions , DEPRECATED_NATIVE_TEST_EXTENSION , "test" );
353357 }
354358
355- TaskProvider <GenerateResourcesConfigFile > generateTestResourcesConfig = registerResourcesConfigTask (
356- graalExtension .getGeneratedResourcesDirectory (),
357- testOptions ,
358- tasks ,
359- transitiveProjectArtifacts (project , config .getSourceSet ().getRuntimeClasspathConfigurationName ()),
360- deriveTaskName (name , "generate" , "ResourcesConfigFile" ));
361- testOptions .getConfigurationFileDirectories ().from (generateTestResourcesConfig .map (t ->
362- t .getOutputFile ().map (f -> f .getAsFile ().getParentFile ())
363- ));
364-
365359 TaskProvider <Test > testTask = config .validate ().getTestTask ();
366360 testOptions .getAgent ().getInstrumentedTask ().set (testTask );
367361 testTask .configure (test -> {
0 commit comments