|
51 | 51 | import java.util.regex.Matcher;
|
52 | 52 | import java.util.regex.Pattern;
|
53 | 53 | import java.util.stream.Collectors;
|
| 54 | +import org.gradle.api.artifacts.ResolvableDependencies; |
| 55 | +import org.gradle.api.artifacts.component.ComponentIdentifier; |
| 56 | +import org.gradle.api.artifacts.result.ResolvedComponentResult; |
| 57 | +import org.gradle.api.artifacts.result.ResolvedDependencyResult; |
| 58 | +import org.gradle.api.file.FileCollection; |
| 59 | +import org.gradle.api.specs.AndSpec; |
| 60 | +import org.gradle.api.specs.Spec; |
| 61 | +import org.gradle.api.artifacts.component.ModuleComponentIdentifier; |
| 62 | +import java.util.stream.Collectors; |
| 63 | +import org.gradle.api.artifacts.Configuration; |
54 | 64 |
|
55 | 65 | /**
|
56 | 66 | * A task to check licenses for dependencies.
|
|
94 | 104 | * for the dependency. This artifact will be redistributed by us with the release to
|
95 | 105 | * comply with the license terms.
|
96 | 106 | */
|
97 |
| -public class DependencyLicensesTask extends DefaultTask { |
| 107 | +public abstract class DependencyLicensesTask extends DefaultTask { |
98 | 108 |
|
99 | 109 | private final Pattern regex = Pattern.compile("-v?\\d+.*");
|
100 | 110 |
|
@@ -148,7 +158,28 @@ public FileCollection getDependencies() {
|
148 | 158 | return dependencies;
|
149 | 159 | }
|
150 | 160 |
|
151 |
| - public void setDependencies(FileCollection dependencies) { |
| 161 | + public void setDependencies(Configuration configuration) { |
| 162 | + ResolvableDependencies incoming = configuration.getIncoming(); |
| 163 | + dependencies = incoming.artifactView(viewConfiguration -> { |
| 164 | + Set<ComponentIdentifier> firstLevelDependencyComponents = incoming.getResolutionResult() |
| 165 | + .getRootComponent() |
| 166 | + .map(rootComponent -> rootComponent.getDependencies() |
| 167 | + .stream() |
| 168 | + .filter(dependency -> dependency instanceof ResolvedDependencyResult) |
| 169 | + .map(dependency -> (ResolvedDependencyResult) dependency) |
| 170 | + .filter(dependency -> dependency.getSelected() instanceof ResolvedComponentResult) |
| 171 | + .map(dependency -> dependency.getSelected().getId()) |
| 172 | + .collect(Collectors.toSet()) |
| 173 | + ).get(); |
| 174 | + Spec<ComponentIdentifier> componentFilter = (identifier -> identifier instanceof ModuleComponentIdentifier |
| 175 | + && ((ModuleComponentIdentifier) identifier).getGroup().startsWith("org.elasticsearch") == false); |
| 176 | + Spec<ComponentIdentifier> firstLevelFilter = (identifier -> firstLevelDependencyComponents.contains(identifier)); |
| 177 | + viewConfiguration.componentFilter( |
| 178 | + new AndSpec<>(firstLevelFilter, componentFilter) |
| 179 | + ); |
| 180 | + }).getFiles(); |
| 181 | + |
| 182 | + |
152 | 183 | this.dependencies = dependencies;
|
153 | 184 | }
|
154 | 185 |
|
|
0 commit comments