Skip to content

Commit 0c1329d

Browse files
committed
Integrate with 'Module Info DSL' of java-module-dependencies plugin
1 parent b5b428c commit 0c1329d

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

src/main/java/org/gradlex/javamodule/testing/JavaModuleTestingExtension.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ private void configureJvmTestSuiteForWhitebox(JvmTestSuite jvmTestSuite, Whitebo
151151
compileJava.getOptions().getCompilerArgumentProviders().add(newProvider);
152152
return newProvider;
153153
});
154+
argumentProvider.testRequires(JavaModuleDependenciesBridge.getCompileClasspathModules(project, testSources));
154155
argumentProvider.testRequires(whiteboxJvmTestSuite.getRequires().get());
155156
});
156157

@@ -172,6 +173,7 @@ private void configureJvmTestSuiteForWhitebox(JvmTestSuite jvmTestSuite, Whitebo
172173
test.getJvmArgumentProviders().add(newProvider);
173174
return newProvider;
174175
});
176+
argumentProvider.testRequires(JavaModuleDependenciesBridge.getRuntimeClasspathModules(project, testSources));
175177
argumentProvider.testRequires(whiteboxJvmTestSuite.getRequires().get());
176178
argumentProvider.testOpensTo(whiteboxJvmTestSuite.getOpensTo().get());
177179
});

src/main/java/org/gradlex/javamodule/testing/internal/bridges/JavaModuleDependenciesBridge.java

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,9 @@
2222
import org.gradle.api.tasks.SourceSet;
2323
import org.gradle.api.tasks.compile.JavaCompile;
2424

25-
import java.lang.reflect.InvocationTargetException;
2625
import java.lang.reflect.Method;
26+
import java.util.Collections;
27+
import java.util.List;
2728

2829
public class JavaModuleDependenciesBridge {
2930

@@ -54,4 +55,29 @@ public static FileCollection addRequiresRuntimeSupport(Project project, JavaComp
5455
throw new RuntimeException(e);
5556
}
5657
}
58+
59+
public static List<String> getRuntimeClasspathModules(Project project, SourceSet sourceSet) {
60+
return getClasspathModules("getRuntimeClasspathModules", project, sourceSet);
61+
}
62+
63+
public static List<String> getCompileClasspathModules(Project project, SourceSet sourceSet) {
64+
return getClasspathModules("getCompileClasspathModules", project, sourceSet);
65+
}
66+
67+
public static List<String> getClasspathModules(String getter, Project project, SourceSet sourceSet) {
68+
Object moduleInfoDslExtension = project.getExtensions().findByName(sourceSet.getName() + "ModuleInfo");
69+
if (moduleInfoDslExtension == null) {
70+
return Collections.emptyList();
71+
}
72+
try {
73+
Method gav = moduleInfoDslExtension.getClass().getMethod(getter);
74+
@SuppressWarnings("unchecked")
75+
List<String> modules = (List<String>) gav.invoke(moduleInfoDslExtension);
76+
return modules;
77+
} catch (NoSuchMethodException e) {
78+
return Collections.emptyList();
79+
} catch (ReflectiveOperationException e) {
80+
throw new RuntimeException(e);
81+
}
82+
}
5783
}

0 commit comments

Comments
 (0)