Skip to content

Commit 8087111

Browse files
paulbakkermykyta-protsenko
authored andcommitted
Support for addModules in all tasks (#21)
1 parent c330249 commit 8087111

File tree

11 files changed

+85
-3
lines changed

11 files changed

+85
-3
lines changed

src/main/java/org/javamodularity/moduleplugin/tasks/CompileJavaTaskMutator.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,18 @@
99
class CompileJavaTaskMutator {
1010

1111
static void mutateJavaCompileTask(Project project, JavaCompile compileJava) {
12+
ModuleOptions moduleOptions = compileJava.getExtensions().getByType(ModuleOptions.class);
13+
1214
var compilerArgs = new ArrayList<>(compileJava.getOptions().getCompilerArgs());
1315
compilerArgs.addAll(List.of("--module-path", compileJava.getClasspath().getAsPath()));
1416

15-
ModuleInfoTestHelper.mutateArgs(project, project.getName(), compilerArgs::add);
17+
if(!moduleOptions.getAddModules().isEmpty()) {
18+
String addModules = String.join(",", moduleOptions.getAddModules());
19+
compilerArgs.add("--add-modules");
20+
compilerArgs.add(addModules);
21+
}
1622

23+
ModuleInfoTestHelper.mutateArgs(project, project.getName(), compilerArgs::add);
1724
compileJava.getOptions().setCompilerArgs(compilerArgs);
1825
compileJava.setClasspath(project.files());
1926
}

src/main/java/org/javamodularity/moduleplugin/tasks/CompileTask.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ public class CompileTask {
99
public void configureCompileJava(Project project) {
1010
JavaCompile compileJava = (JavaCompile) project.getTasks().findByName(JavaPlugin.COMPILE_JAVA_TASK_NAME);
1111
if (compileJava != null) {
12+
compileJava.getExtensions().create("moduleOptions", ModuleOptions.class, project);
13+
1214
compileJava.doFirst(task -> CompileJavaTaskMutator.mutateJavaCompileTask(project, compileJava));
1315
}
1416
}

src/main/java/org/javamodularity/moduleplugin/tasks/CompileTestTask.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class CompileTestTask {
1515
public void configureCompileTestJava(Project project, String moduleName) {
1616
JavaCompile compileTestJava = (JavaCompile) project.getTasks().findByName(JavaPlugin.COMPILE_TEST_JAVA_TASK_NAME);
1717
JavaPluginConvention javaConvention = project.getConvention().getPlugin(JavaPluginConvention.class);
18-
18+
compileTestJava.getExtensions().create("moduleOptions", ModuleOptions.class, project);
1919
SourceSet testSourceSet = javaConvention.getSourceSets().getByName(SourceSet.TEST_SOURCE_SET_NAME);
2020

2121
compileTestJava.doFirst(task -> {
@@ -31,6 +31,13 @@ public void configureCompileTestJava(Project project, String moduleName) {
3131
"--add-reads", moduleName + "=" + testEngine.moduleName));
3232
});
3333

34+
ModuleOptions moduleOptions = compileTestJava.getExtensions().getByType(ModuleOptions.class);
35+
if(!moduleOptions.getAddModules().isEmpty()) {
36+
String addModules = String.join(",", moduleOptions.getAddModules());
37+
args.add("--add-modules");
38+
args.add(addModules);
39+
}
40+
3441
ModuleInfoTestHelper.mutateArgs(project, moduleName, args::add);
3542

3643
compileTestJava.getOptions().setCompilerArgs(args);

src/main/java/org/javamodularity/moduleplugin/tasks/JavadocTask.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,19 @@ public void configureJavaDoc(Project project) {
1010
Javadoc javadoc = (Javadoc) project.getTasks().findByName(JavaPlugin.JAVADOC_TASK_NAME);
1111
if (javadoc != null) {
1212

13+
javadoc.getExtensions().create("moduleOptions", ModuleOptions.class, project);
14+
1315
javadoc.doFirst(task -> {
16+
ModuleOptions moduleOptions = javadoc.getExtensions().getByType(ModuleOptions.class);
17+
1418
CoreJavadocOptions options = (CoreJavadocOptions) javadoc.getOptions();
1519
options.addStringOption("-module-path", javadoc.getClasspath().getAsPath());
20+
21+
if(!moduleOptions.getAddModules().isEmpty()) {
22+
String addModules = String.join(",", moduleOptions.getAddModules());
23+
options.addStringOption("-add-module", addModules);
24+
}
25+
1626
javadoc.setClasspath(project.files());
1727
});
1828

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package org.javamodularity.moduleplugin.tasks;
2+
3+
import org.gradle.api.Project;
4+
5+
import java.util.ArrayList;
6+
import java.util.List;
7+
8+
public class ModuleOptions {
9+
private List<String> addModules = new ArrayList<>();
10+
11+
public ModuleOptions(Project project) {}
12+
13+
public List<String> getAddModules() {
14+
return addModules;
15+
}
16+
17+
public void setAddModules(List<String> addModules) {
18+
this.addModules = addModules;
19+
}
20+
}

src/main/java/org/javamodularity/moduleplugin/tasks/RunTask.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ public void configureRun(Project project, String moduleName) {
2525
project.getPluginManager().withPlugin(ApplicationPlugin.APPLICATION_PLUGIN_NAME, plugin -> {
2626
if (project.getPlugins().hasPlugin("application")) {
2727
JavaExec execTask = (JavaExec) project.getTasks().findByName(ApplicationPlugin.TASK_RUN_NAME);
28+
execTask.getExtensions().create("moduleOptions", ModuleOptions.class, project);
2829
updateJavaExecTask(execTask, moduleName);
2930
updateStartScriptsTask(project, execTask, moduleName);
3031
}
@@ -42,6 +43,14 @@ private void updateStartScriptsTask(Project project, JavaExec execTask, String m
4243
);
4344

4445
var jvmArgs = new ArrayList<String>();
46+
47+
ModuleOptions moduleOptions = execTask.getExtensions().getByType(ModuleOptions.class);
48+
System.out.println("ModuleOptions: " + moduleOptions);
49+
if(!moduleOptions.getAddModules().isEmpty()) {
50+
String addModules = String.join(",", moduleOptions.getAddModules());
51+
jvmArgs.add("--add-modules");
52+
jvmArgs.add(addModules);
53+
}
4554
startScriptsTask.getDefaultJvmOpts().forEach(jvmArgs::add);
4655
jvmArgs.addAll(moduleJvmArgs);
4756

@@ -65,9 +74,19 @@ private void updateJavaExecTask(JavaExec execTask, String moduleName) {
6574
);
6675

6776
var jvmArgs = new ArrayList<String>();
77+
78+
ModuleOptions moduleOptions = execTask.getExtensions().getByType(ModuleOptions.class);
79+
if(!moduleOptions.getAddModules().isEmpty()) {
80+
String addModules = String.join(",", moduleOptions.getAddModules());
81+
jvmArgs.add("--add-modules");
82+
jvmArgs.add(addModules);
83+
}
84+
6885
jvmArgs.addAll(execTask.getJvmArgs());
6986
jvmArgs.addAll(moduleJvmArgs);
7087

88+
89+
7190
execTask.setJvmArgs(jvmArgs);
7291

7392
});

src/main/java/org/javamodularity/moduleplugin/tasks/TestModuleOptions.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
22

33
import org.gradle.api.Project;
44

5-
public class TestModuleOptions {
5+
public class TestModuleOptions extends ModuleOptions {
66

77
private boolean runOnClasspath;
88

99
public TestModuleOptions(Project project) {
10+
super(project);
1011
}
1112

1213
public boolean isRunOnClasspath() {

src/main/java/org/javamodularity/moduleplugin/tasks/TestTask.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,12 @@ public void configureTestJava(Project project, String moduleName) {
4242
"--add-modules", "ALL-MODULE-PATH"
4343
));
4444

45+
if(!testModuleOptions.getAddModules().isEmpty()) {
46+
String addModules = String.join(",", testModuleOptions.getAddModules());
47+
args.add("--add-modules");
48+
args.add(addModules);
49+
}
50+
4551
TestEngine.select(project).ifPresent(testEngine -> {
4652
args.addAll(List.of("--add-reads", moduleName + "=" + testEngine.moduleName));
4753

src/test/java/org/javamodularity/moduleplugin/tasks/CompileJavaTaskMutatorTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ void mutateJavaCompileTask() {
2020
Project project = ProjectBuilder.builder().withProjectDir(new File("test-project/")).build();
2121
project.getPlugins().apply("java");
2222
final JavaCompile compileJava = (JavaCompile) project.getTasks().findByName(JavaPlugin.COMPILE_JAVA_TASK_NAME);
23+
compileJava.getExtensions().create("moduleOptions", ModuleOptions.class, project);
2324

2425
// when
2526
CompileJavaTaskMutator.mutateJavaCompileTask(project, compileJava);

test-project/greeter.runner/build.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ dependencies {
1111
mainClassName = "$moduleName/examples.Runner"
1212

1313
run {
14+
moduleOptions {
15+
addModules = ['java.sql']
16+
}
17+
1418
jvmArgs = [
1519
"-XX:+PrintGCDetails"
1620
]

0 commit comments

Comments
 (0)