1717package org .gradlex .javamodule .dependencies ;
1818
1919import org .gradle .api .Project ;
20- import org .gradle .api .Task ;
2120import org .gradle .api .artifacts .Configuration ;
2221import org .gradle .api .artifacts .ConfigurationContainer ;
2322import org .gradle .api .artifacts .Dependency ;
4140import org .gradle .api .tasks .SourceSetContainer ;
4241import org .gradle .api .tasks .compile .JavaCompile ;
4342import org .gradle .api .tasks .javadoc .Javadoc ;
44- import org .gradlex .javamodule .dependencies .internal .compile .AddSyntheticModulesToCompileClasspathAction ;
4543import org .gradlex .javamodule .dependencies .internal .utils .ModuleInfo ;
4644import org .gradlex .javamodule .dependencies .internal .utils .ModuleInfoCache ;
45+ import org .gradlex .javamodule .dependencies .internal .utils .ModuleInfoClassCreator ;
4746
4847import javax .inject .Inject ;
4948import java .io .File ;
@@ -385,7 +384,9 @@ private Dependency createDependency(String project) {
385384 * @return collection of folders containing synthetic module-info.class files
386385 */
387386 public FileCollection addRequiresRuntimeSupport (JavaCompile task , SourceSet sourceSet ) {
388- return doAddRequiresRuntimeSupport (task , sourceSet );
387+ Optional <SourceSet > sourceSetForClasspath = getSourceSets ().stream ().filter (s -> s .getCompileJavaTaskName ().equals (task .getName ())).findFirst ();
388+ sourceSetForClasspath .ifPresent (s -> doAddRequiresRuntimeSupport (sourceSet , s ));
389+ return getObjects ().fileCollection (); // no-op
389390 }
390391
391392 /**
@@ -397,19 +398,20 @@ public FileCollection addRequiresRuntimeSupport(JavaCompile task, SourceSet sour
397398 * @return collection of folders containing synthetic module-info.class files
398399 */
399400 public FileCollection addRequiresRuntimeSupport (Javadoc task , SourceSet sourceSet ) {
400- return doAddRequiresRuntimeSupport ( task , sourceSet );
401+ return getObjects (). fileCollection (); // no-op
401402 }
402403
403- FileCollection doAddRequiresRuntimeSupport (Task task , SourceSet sourceSet ) {
404- List <String > requiresRuntime = getModuleInfoCache ().get (sourceSet ).get (ModuleInfo .Directive .REQUIRES_RUNTIME );
404+ void doAddRequiresRuntimeSupport (SourceSet sourceSetForModuleInfo , SourceSet sourceSetForClasspath ) {
405+ List <String > requiresRuntime = getModuleInfoCache ().get (sourceSetForModuleInfo ).get (ModuleInfo .Directive .REQUIRES_RUNTIME );
405406 ConfigurableFileCollection syntheticModuleInfoFolders = getObjects ().fileCollection ();
406407 if (!requiresRuntime .isEmpty ()) {
407- Provider <Directory > tmpDir = getLayout ().getBuildDirectory ().dir ("tmp/java-module-dependencies/" + task . getName () );
408+ Provider <Directory > tmpDir = getLayout ().getBuildDirectory ().dir ("tmp/java-module-dependencies" );
408409 requiresRuntime .forEach (moduleName -> syntheticModuleInfoFolders .from (tmpDir .map (dir -> dir .dir (moduleName ))));
409- task .doFirst (getObjects ().newInstance (AddSyntheticModulesToCompileClasspathAction .class , syntheticModuleInfoFolders ));
410- return syntheticModuleInfoFolders ;
410+ for (File moduleFolder : syntheticModuleInfoFolders ) {
411+ ModuleInfoClassCreator .createEmpty (moduleFolder );
412+ }
413+ getDependencies ().add (sourceSetForClasspath .getCompileOnlyConfigurationName (), syntheticModuleInfoFolders );
411414 }
412- return syntheticModuleInfoFolders ;
413415 }
414416
415417 private <T > Provider <T > errorIfNotFound (String moduleName ) {
0 commit comments