Skip to content

Commit e8d7517

Browse files
committed
Fix dependency reporting (elastic#136209)
This has been broken since 9.0.3. likely due to some swallowed api change in Gradle. This fixes and adds test coverage to dependency reporting used in DRA artifacts building Fix interdependency to Licenses task (cherry picked from commit f74406d) # Conflicts: # build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/DependenciesUtils.java # modules/repository-s3/build.gradle # plugins/discovery-ec2/build.gradle # x-pack/plugin/core/build.gradle # x-pack/plugin/identity-provider/build.gradle
1 parent fa660c4 commit e8d7517

File tree

2 files changed

+35
-4
lines changed

2 files changed

+35
-4
lines changed

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/util/DependenciesUtils.java

Lines changed: 33 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,17 @@
99

1010
package org.elasticsearch.gradle.internal.util;
1111

12+
import com.github.jengelman.gradle.plugins.shadow.ShadowBasePlugin;
13+
1214
import org.gradle.api.artifacts.ArtifactView;
1315
import org.gradle.api.artifacts.Configuration;
1416
import org.gradle.api.artifacts.ResolvableDependencies;
1517
import org.gradle.api.artifacts.component.ComponentIdentifier;
18+
import org.gradle.api.artifacts.component.ProjectComponentIdentifier;
1619
import org.gradle.api.artifacts.result.ResolvedComponentResult;
1720
import org.gradle.api.artifacts.result.ResolvedDependencyResult;
1821
import org.gradle.api.file.FileCollection;
22+
import org.gradle.api.provider.Provider;
1923
import org.gradle.api.specs.AndSpec;
2024
import org.gradle.api.specs.Spec;
2125

@@ -38,7 +42,7 @@ public static ArtifactView createNonTransitiveArtifactsView(Configuration config
3842
public static ArtifactView createNonTransitiveArtifactsView(Configuration configuration, Spec<ComponentIdentifier> componentFilter) {
3943
ResolvableDependencies incoming = configuration.getIncoming();
4044
return incoming.artifactView(viewConfiguration -> {
41-
Set<ComponentIdentifier> firstLevelDependencyComponents = incoming.getResolutionResult()
45+
Provider<Set<ComponentIdentifier>> firstLevelDependencyComponents = incoming.getResolutionResult()
4246
.getRootComponent()
4347
.map(
4448
rootComponent -> rootComponent.getDependencies()
@@ -48,11 +52,36 @@ public static ArtifactView createNonTransitiveArtifactsView(Configuration config
4852
.filter(dependency -> dependency.getSelected() instanceof ResolvedComponentResult)
4953
.map(dependency -> dependency.getSelected().getId())
5054
.collect(Collectors.toSet())
51-
)
52-
.get();
55+
);
5356
viewConfiguration.componentFilter(
54-
new AndSpec<>(identifier -> firstLevelDependencyComponents.contains(identifier), componentFilter)
57+
new AndSpec<>(identifier -> firstLevelDependencyComponents.get().contains(identifier), componentFilter)
5558
);
5659
});
5760
}
61+
62+
/**
63+
* This method gives us an artifact view of a configuration that filters out all
64+
* project dependencies that are not shadowed jars.
65+
* Basically a thirdparty only view of the dependency tree.
66+
*/
67+
public static FileCollection thirdPartyDependenciesView(Configuration configuration) {
68+
ResolvableDependencies incoming = configuration.getIncoming();
69+
return incoming.artifactView(v -> {
70+
// resolve componentIdentifier for all shadowed project dependencies
71+
Provider<Set<ComponentIdentifier>> shadowedDependencies = incoming.getResolutionResult()
72+
.getRootComponent()
73+
.map(
74+
root -> root.getDependencies()
75+
.stream()
76+
.filter(dep -> dep instanceof ResolvedDependencyResult)
77+
.map(dep -> (ResolvedDependencyResult) dep)
78+
.filter(dep -> dep.getResolvedVariant().getDisplayName() == ShadowBasePlugin.SHADOW)
79+
.filter(dep -> dep.getSelected() instanceof ResolvedComponentResult)
80+
.map(dep -> dep.getSelected().getId())
81+
.collect(Collectors.toSet())
82+
);
83+
// filter out project dependencies if they are not a shadowed dependency
84+
v.componentFilter(i -> (i instanceof ProjectComponentIdentifier == false || shadowedDependencies.get().contains(i)));
85+
}).getFiles();
86+
}
5887
}

x-pack/plugin/inference/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ import org.elasticsearch.gradle.internal.info.BuildParams
88

99
import org.elasticsearch.gradle.internal.AbstractDependenciesTask
1010

11+
import org.elasticsearch.gradle.internal.AbstractDependenciesTask
12+
1113
apply plugin: 'elasticsearch.internal-es-plugin'
1214
apply plugin: 'elasticsearch.internal-cluster-test'
1315
apply plugin: 'elasticsearch.internal-yaml-rest-test'

0 commit comments

Comments
 (0)