Skip to content

Commit 0636160

Browse files
authored
Fix dependency reporting (#136209) (#137929)
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 # x-pack/plugin/core/build.gradle
1 parent a51433e commit 0636160

File tree

4 files changed

+41
-4
lines changed

4 files changed

+41
-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
}

modules/repository-s3/build.gradle

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,10 @@ import org.elasticsearch.gradle.internal.test.InternalClusterTestPlugin
1111
* License v3.0 only", or the "Server Side Public License, v 1".
1212
*/
1313
import org.elasticsearch.gradle.internal.AbstractDependenciesTask
14+
import org.apache.tools.ant.filters.ReplaceTokens
15+
import org.elasticsearch.gradle.internal.test.InternalClusterTestPlugin
16+
import org.elasticsearch.gradle.internal.AbstractDependenciesTask
17+
1418
apply plugin: 'elasticsearch.internal-yaml-rest-test'
1519
apply plugin: 'elasticsearch.internal-cluster-test'
1620
apply plugin: 'elasticsearch.internal-java-rest-test'

x-pack/plugin/identity-provider/build.gradle

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

10+
import org.elasticsearch.gradle.internal.AbstractDependenciesTask
11+
1012
apply plugin: 'elasticsearch.internal-es-plugin'
1113
apply plugin: 'elasticsearch.internal-cluster-test'
1214
esplugin {

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)