Skip to content

Commit 729212c

Browse files
committed
Fix setup of ModuleDependencyReport task
Fixes #104
1 parent 89e076b commit 729212c

File tree

3 files changed

+44
-33
lines changed

3 files changed

+44
-33
lines changed

src/main/java/org/gradlex/javamodule/dependencies/JavaModuleDependenciesPlugin.java

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -132,29 +132,16 @@ private void setupDirectivesDSL(Project project, JavaModuleDependenciesExtension
132132

133133
private void setupModuleDependenciesTask(Project project) {
134134
SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class);
135-
TaskProvider<ModuleDependencyReport> moduleDependencies = project.getTasks().register("moduleDependencies", ModuleDependencyReport.class, t -> {
136-
t.setGroup(HELP_GROUP);
137-
if (t.isConfigurationSetByUser()) {
138-
Configuration conf = t.getConfigurations().iterator().next();
139-
t.getModuleArtifacts().add(project.provider(() -> conf.getIncoming().getArtifacts()));
140-
}
141-
});
135+
TaskProvider<ModuleDependencyReport> moduleDependencies = project.getTasks().register("moduleDependencies", ModuleDependencyReport.class, t -> t.setGroup(HELP_GROUP));
142136
sourceSets.all(sourceSet -> {
143137
moduleDependencies.configure(t -> {
144-
if (!t.isConfigurationSetByUser()) {
145-
HashSet<Configuration> reportConfigurations = new HashSet<>();
146-
if (t.getConfigurations() != null) {
147-
reportConfigurations.addAll(t.getConfigurations());
148-
}
149-
Configuration cpClasspath = project.getConfigurations().getByName(sourceSet.getCompileClasspathConfigurationName());
150-
Configuration rtClasspath = project.getConfigurations().getByName(sourceSet.getRuntimeClasspathConfigurationName());
151-
reportConfigurations.add(cpClasspath);
152-
reportConfigurations.add(rtClasspath);
153-
t.setConfigurations(reportConfigurations);
154-
155-
t.getModuleArtifacts().add(project.provider(() -> cpClasspath.getIncoming().getArtifacts()));
156-
t.getModuleArtifacts().add(project.provider(() -> rtClasspath.getIncoming().getArtifacts()));
138+
HashSet<Configuration> joined = new HashSet<>();
139+
if (t.getConfigurations() != null) {
140+
joined.addAll(t.getConfigurations());
157141
}
142+
joined.add(project.getConfigurations().getByName(sourceSet.getCompileClasspathConfigurationName()));
143+
joined.add(project.getConfigurations().getByName(sourceSet.getRuntimeClasspathConfigurationName()));
144+
t.setConfigurations(joined);
158145
});
159146
});
160147
}

src/main/java/org/gradlex/javamodule/dependencies/internal/diagnostics/AsciiModuleDependencyReportRenderer.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,18 +31,17 @@
3131
import org.gradle.internal.logging.text.StyledTextOutput;
3232

3333
import java.util.Collections;
34-
import java.util.List;
35-
import java.util.stream.Collectors;
34+
import java.util.Map;
3635

3736
import static java.util.Objects.requireNonNull;
3837

3938
@NonNullApi
4039
public class AsciiModuleDependencyReportRenderer extends AsciiDependencyReportRenderer {
4140

4241
private DependencyGraphsRenderer dependencyGraphRenderer;
43-
private final Provider<List<ArtifactCollection>> resolvedJars;
42+
private final Provider<Map<String, ArtifactCollection>> resolvedJars;
4443

45-
public AsciiModuleDependencyReportRenderer(Provider<List<ArtifactCollection>> resolvedJars) {
44+
public AsciiModuleDependencyReportRenderer(Provider<Map<String, ArtifactCollection>> resolvedJars) {
4645
this.resolvedJars = resolvedJars;
4746
}
4847

@@ -57,7 +56,7 @@ public void startProject(ProjectDetails project) {
5756
public void render(ConfigurationDetails configuration) {
5857
if (configuration.isCanBeResolved()) {
5958
ResolvedComponentResult result = requireNonNull(configuration.getResolutionResultRoot()).get();
60-
RenderableModuleResult root = new RenderableJavaModuleResult(result, resolvedJars.get().stream().flatMap(c -> c.getArtifacts().stream()).collect(Collectors.toSet()));
59+
RenderableModuleResult root = new RenderableJavaModuleResult(result, resolvedJars.get().get(configuration.getName()).getArtifacts());
6160
renderNow(root);
6261
} else {
6362
renderNow(requireNonNull(configuration.getUnresolvableResult()));

src/main/java/org/gradlex/javamodule/dependencies/tasks/ModuleDependencyReport.java

Lines changed: 33 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,33 @@
1818

1919
import org.gradle.api.NonNullApi;
2020
import org.gradle.api.artifacts.ArtifactCollection;
21-
import org.gradle.api.provider.ListProperty;
21+
import org.gradle.api.artifacts.Configuration;
22+
import org.gradle.api.file.ConfigurableFileCollection;
23+
import org.gradle.api.provider.MapProperty;
24+
import org.gradle.api.provider.ProviderFactory;
25+
import org.gradle.api.tasks.Classpath;
2226
import org.gradle.api.tasks.Internal;
2327
import org.gradle.api.tasks.diagnostics.DependencyReportTask;
2428
import org.gradlex.javamodule.dependencies.internal.diagnostics.AsciiModuleDependencyReportRenderer;
2529

30+
import javax.inject.Inject;
31+
import java.util.Set;
32+
2633
@NonNullApi
2734
public abstract class ModuleDependencyReport extends DependencyReportTask {
2835

29-
private boolean configurationSetByUser = false;
30-
3136
@Internal
32-
public abstract ListProperty<ArtifactCollection> getModuleArtifacts();
37+
public abstract MapProperty<String, ArtifactCollection> getModuleArtifacts();
38+
39+
/**
40+
* Required to track all Jar files as input of the task.
41+
* Although they are only accessed through getModuleArtifacts().
42+
*/
43+
@Classpath
44+
public abstract ConfigurableFileCollection getModulePath();
45+
46+
@Inject
47+
protected abstract ProviderFactory getProviders();
3348

3449
public ModuleDependencyReport() {
3550
setRenderer(new AsciiModuleDependencyReportRenderer(getModuleArtifacts()));
@@ -38,11 +53,21 @@ public ModuleDependencyReport() {
3853
@Override
3954
public void setConfiguration(String configurationName) {
4055
super.setConfiguration(configurationName);
41-
configurationSetByUser = true;
56+
configurationsChanged();
4257
}
4358

44-
@Internal
45-
public boolean isConfigurationSetByUser() {
46-
return configurationSetByUser;
59+
@Override
60+
public void setConfigurations(Set<Configuration> configurations) {
61+
super.setConfigurations(configurations);
62+
configurationsChanged();
63+
}
64+
65+
private void configurationsChanged() {
66+
getModulePath().setFrom();
67+
getModuleArtifacts().unset();
68+
for (Configuration conf : getConfigurations()) {
69+
getModulePath().from(conf);
70+
getModuleArtifacts().put(conf.getName(), getProviders().provider(() -> conf.getIncoming().getArtifacts()));
71+
}
4772
}
4873
}

0 commit comments

Comments
 (0)