use of org.gradle.api.reporting.dependents.internal.TextDependentComponentsReportRenderer in project gradle by gradle.
the class DependentComponentsReport method report.
@TaskAction
public void report() {
// Once we are here, the project lock is held. If we synchronize to avoid cross-project operations, we will have a dead lock.
getWorkerLeaseService().runAsIsolatedTask(() -> {
// Cross-project ModelRegistry operations do not happen concurrently.
synchronized (DependentComponentsReport.class) {
((ProjectInternal) getProject()).getOwner().applyToMutableState(project -> {
ModelRegistry modelRegistry = getModelRegistry();
DependentBinariesResolver dependentBinariesResolver = modelRegistry.find("dependentBinariesResolver", DependentBinariesResolver.class);
StyledTextOutput textOutput = getTextOutputFactory().create(DependentComponentsReport.class);
TextDependentComponentsReportRenderer reportRenderer = new TextDependentComponentsReportRenderer(dependentBinariesResolver, showNonBuildable, showTestSuites);
reportRenderer.setOutput(textOutput);
ProjectDetails projectDetails = ProjectDetails.of(project);
reportRenderer.startProject(projectDetails);
Set<ComponentSpec> allComponents = getAllComponents(modelRegistry);
if (showTestSuites) {
allComponents.addAll(getAllTestSuites(modelRegistry));
}
reportRenderer.renderComponents(getReportedComponents(allComponents));
reportRenderer.renderLegend();
reportRenderer.completeProject(projectDetails);
reportRenderer.complete();
});
}
});
}
Aggregations