Skip to content

Commit 8aa0c78

Browse files
aloubyanskyDavideD
authored andcommitted
Initialize the main WorkspaceModule during the configuration time
1 parent 508f615 commit 8aa0c78

File tree

29 files changed

+734
-518
lines changed

29 files changed

+734
-518
lines changed

devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/QuarkusPlugin.java

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55

66
import java.io.File;
77
import java.nio.file.Path;
8-
import java.util.Collections;
98
import java.util.HashMap;
109
import java.util.HashSet;
1110
import java.util.Map;
@@ -182,14 +181,14 @@ private void registerTasks(Project project, QuarkusPluginExtension quarkusExt) {
182181
.getByName(ApplicationDeploymentClasspathBuilder.getBaseRuntimeConfigName(LaunchMode.DEVELOPMENT)));
183182
});
184183

185-
Provider<DefaultProjectDescriptor> projectDescriptor = ProjectDescriptorBuilder.buildForApp(project);
186184
ApplicationDeploymentClasspathBuilder normalClasspath = new ApplicationDeploymentClasspathBuilder(project,
187185
LaunchMode.NORMAL);
188186
ApplicationDeploymentClasspathBuilder testClasspath = new ApplicationDeploymentClasspathBuilder(project,
189187
LaunchMode.TEST);
190188
ApplicationDeploymentClasspathBuilder devClasspath = new ApplicationDeploymentClasspathBuilder(project,
191189
LaunchMode.DEVELOPMENT);
192190

191+
Provider<DefaultProjectDescriptor> projectDescriptor = ProjectDescriptorBuilder.buildForApp(project);
193192
TaskProvider<QuarkusApplicationModelTask> quarkusGenerateTestAppModelTask = tasks.register(
194193
"quarkusGenerateTestAppModel",
195194
QuarkusApplicationModelTask.class, task -> {
@@ -204,8 +203,7 @@ private void registerTasks(Project project, QuarkusPluginExtension quarkusExt) {
204203

205204
TaskProvider<QuarkusApplicationModelTask> quarkusGenerateAppModelTask = tasks.register("quarkusGenerateAppModel",
206205
QuarkusApplicationModelTask.class, task -> {
207-
configureApplicationModelTask(project, task, projectDescriptor
208-
.map(d -> d.withSourceSetView(Collections.singleton(SourceSet.MAIN_SOURCE_SET_NAME))),
206+
configureApplicationModelTask(project, task, projectDescriptor,
209207
normalClasspath, LaunchMode.NORMAL,
210208
"quarkus/application-model/quarkus-app-model.dat");
211209
});
@@ -237,8 +235,7 @@ private void registerTasks(Project project, QuarkusPluginExtension quarkusExt) {
237235
TaskProvider<QuarkusApplicationModelTask> quarkusBuildAppModelTask = tasks.register("quarkusBuildAppModel",
238236
QuarkusApplicationModelTask.class, task -> {
239237
task.dependsOn(tasks.named(JavaPlugin.CLASSES_TASK_NAME));
240-
configureApplicationModelTask(project, task, projectDescriptor
241-
.map(d -> d.withSourceSetView(Collections.singleton(SourceSet.MAIN_SOURCE_SET_NAME))),
238+
configureApplicationModelTask(project, task, projectDescriptor,
242239
normalClasspath, LaunchMode.NORMAL,
243240
"quarkus/application-model/quarkus-app-model-build.dat");
244241
});
@@ -519,9 +516,9 @@ private static void configureApplicationModelTask(Project project, QuarkusApplic
519516
task.getOriginalClasspath().setFrom(classpath.getOriginalRuntimeClasspathAsInput());
520517
task.getAppClasspath().configureFrom(classpath.getRuntimeConfigurationWithoutResolvingDeployment());
521518
task.getPlatformConfiguration().configureFrom(classpath.getPlatformConfiguration());
519+
task.getPlatformInfo().configureFrom(classpath.getPlatformPropertiesConfiguration());
522520
task.getDeploymentClasspath().configureFrom(classpath.getDeploymentConfiguration());
523521
task.getDeploymentResolvedWorkaround().from(classpath.getDeploymentConfiguration().getIncoming().getFiles());
524-
task.getPlatformImports().set(classpath.getPlatformImportsWithoutResolvingPlatform());
525522
task.getApplicationModel().set(project.getLayout().getBuildDirectory().file(quarkusModelFile));
526523
}
527524

devtools/gradle/gradle-application-plugin/src/main/java/io/quarkus/gradle/tasks/QuarkusApplicationModelTask.java

Lines changed: 134 additions & 172 deletions
Large diffs are not rendered by default.
Lines changed: 13 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,105 +1,38 @@
11
package io.quarkus.gradle.workspace.descriptors;
22

3-
import java.io.File;
43
import java.io.Serializable;
5-
import java.util.Collections;
6-
import java.util.Map;
7-
import java.util.Set;
8-
import java.util.TreeMap;
9-
import java.util.stream.Collectors;
4+
5+
import io.quarkus.bootstrap.workspace.WorkspaceModule;
6+
import io.quarkus.bootstrap.workspace.WorkspaceModuleId;
107

118
public class DefaultProjectDescriptor implements Serializable, ProjectDescriptor {
129

1310
private static final long serialVersionUID = 1L;
1411

15-
private final File projectDir;
16-
private final File buildDir;
17-
private final File buildFile;
18-
19-
private final Map<String, QuarkusTaskDescriptor> tasks;
20-
private final Map<String, Set<String>> sourceSetTasks;
21-
private final Map<String, Set<String>> sourceSetTasksRaw;
22-
23-
public DefaultProjectDescriptor(File projectDir, File buildDir, File buildFile, Map<String, QuarkusTaskDescriptor> tasks,
24-
Map<String, Set<String>> sourceSetTasks, Map<String, Set<String>> sourceSetTasksRaw) {
25-
this.projectDir = projectDir;
26-
this.buildDir = buildDir;
27-
this.buildFile = buildFile;
28-
this.tasks = tasks;
29-
this.sourceSetTasks = sourceSetTasks;
30-
this.sourceSetTasksRaw = sourceSetTasksRaw;
31-
}
32-
33-
@Override
34-
public File getProjectDir() {
35-
return projectDir;
36-
}
12+
private WorkspaceModule.Mutable module;
3713

38-
@Override
39-
public File getBuildDir() {
40-
return buildDir;
14+
public DefaultProjectDescriptor(WorkspaceModule.Mutable module) {
15+
this.module = module;
4116
}
4217

4318
@Override
44-
public File getBuildFile() {
45-
return buildFile;
46-
}
47-
48-
public Map<String, Set<String>> getSourceSetTasks() {
49-
return sourceSetTasks;
50-
}
51-
52-
public Map<String, Set<String>> getSourceSetTasksRaw() {
53-
return sourceSetTasksRaw;
19+
public WorkspaceModule.Mutable getWorkspaceModule() {
20+
return module;
5421
}
5522

56-
public Map<String, QuarkusTaskDescriptor> getTasks() {
57-
return tasks;
23+
public void setWorkspaceModule(WorkspaceModule.Mutable module) {
24+
this.module = module;
5825
}
5926

6027
@Override
61-
public Set<String> getTasksForSourceSet(String sourceSetName) {
62-
return sourceSetTasks.getOrDefault(sourceSetName, Collections.emptySet());
63-
}
64-
65-
@Override
66-
public String getTaskSource(String task) {
67-
return tasks.get(task).getSourceDir().getAbsolutePath();
68-
}
69-
70-
@Override
71-
public String getTaskDestinationDir(String task) {
72-
return tasks.get(task).getDestinationDir().getAbsolutePath();
73-
}
74-
75-
@Override
76-
public TaskType getTaskType(String task) {
77-
return tasks.get(task).getTaskType();
78-
}
79-
80-
/**
81-
* Returns a new {@link DefaultProjectDescriptor} with only the given source sets.
82-
*/
83-
public DefaultProjectDescriptor withSourceSetView(Set<String> acceptedSourceSets) {
84-
Map<String, Set<String>> filteredSourceSets = sourceSetTasks.entrySet().stream()
85-
.filter(e -> acceptedSourceSets.contains(e.getKey()))
86-
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> a, TreeMap::new));
87-
Map<String, QuarkusTaskDescriptor> filteredTasks = tasks.entrySet().stream()
88-
.filter(e -> filteredSourceSets.values().stream().anyMatch(tasks -> tasks.contains(e.getKey())))
89-
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> a, TreeMap::new));
90-
return new DefaultProjectDescriptor(projectDir, buildDir, buildFile, filteredTasks, filteredSourceSets,
91-
sourceSetTasksRaw);
28+
public WorkspaceModule.Mutable getWorkspaceModuleOrNull(WorkspaceModuleId moduleId) {
29+
return module.getId().equals(moduleId) ? module : null;
9230
}
9331

9432
@Override
9533
public String toString() {
9634
return "DefaultProjectDescriptor{" +
97-
"\nprojectDir=" + projectDir +
98-
",\nbuildDir=" + buildDir +
99-
",\nbuildFile=" + buildFile +
100-
",\ntasks=" + tasks +
101-
",\nsourceSetTasks=" + sourceSetTasks +
102-
",\nsourceSetTasksRaw=" + sourceSetTasksRaw +
35+
"\nmodule=" + module +
10336
"\n}";
10437
}
10538
}
Lines changed: 16 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,22 @@
11
package io.quarkus.gradle.workspace.descriptors;
22

3-
import java.io.File;
4-
import java.util.Set;
3+
import io.quarkus.bootstrap.workspace.WorkspaceModule;
4+
import io.quarkus.bootstrap.workspace.WorkspaceModuleId;
55

66
public interface ProjectDescriptor {
77

8-
public enum TaskType {
9-
COMPILE,
10-
RESOURCES
11-
}
12-
13-
public File getProjectDir();
14-
15-
public File getBuildDir();
16-
17-
public File getBuildFile();
18-
19-
public Set<String> getTasksForSourceSet(String sourceName);
20-
21-
public String getTaskSource(String task);
22-
23-
public String getTaskDestinationDir(String task);
24-
25-
public TaskType getTaskType(String task);
26-
8+
/**
9+
* Project workspace module
10+
*
11+
* @return workspace module
12+
*/
13+
WorkspaceModule.Mutable getWorkspaceModule();
14+
15+
/**
16+
* Workspace module for a specific module ID (in a multi module project)
17+
*
18+
* @param moduleId module ID
19+
* @return workspace module for a given module ID or null, if the requested module info is not available
20+
*/
21+
WorkspaceModule.Mutable getWorkspaceModuleOrNull(WorkspaceModuleId moduleId);
2722
}

0 commit comments

Comments
 (0)