Skip to content

Commit f5cc243

Browse files
authored
[7.17] Avoid resolving project dependencies in 'resolveAllDependencies' task (#115888) (#115949)
* Avoid resolving project dependencies in 'resolveAllDependencies' task (#115888) # Conflicts: # build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/ResolveAllDependencies.java * Ooops
1 parent 52142d0 commit f5cc243

File tree

1 file changed

+18
-6
lines changed

1 file changed

+18
-6
lines changed

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

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,11 @@
1010

1111
import org.gradle.api.DefaultTask;
1212
import org.gradle.api.artifacts.Configuration;
13+
import org.gradle.api.artifacts.FileCollectionDependency;
14+
import org.gradle.api.artifacts.component.ModuleComponentIdentifier;
1315
import org.gradle.api.file.FileCollection;
1416
import org.gradle.api.model.ObjectFactory;
17+
import org.gradle.api.provider.ProviderFactory;
1518
import org.gradle.api.tasks.InputFiles;
1619
import org.gradle.api.tasks.TaskAction;
1720
import org.gradle.internal.deprecation.DeprecatableConfiguration;
@@ -21,23 +24,31 @@
2124

2225
import javax.inject.Inject;
2326

24-
import static org.elasticsearch.gradle.DistributionDownloadPlugin.DISTRO_EXTRACTED_CONFIG_PREFIX;
25-
2627
public class ResolveAllDependencies extends DefaultTask {
2728

2829
private final ObjectFactory objectFactory;
30+
private final ProviderFactory providerFactory;
2931

3032
Collection<Configuration> configs;
3133

3234
@Inject
33-
public ResolveAllDependencies(ObjectFactory objectFactory) {
35+
public ResolveAllDependencies(ObjectFactory objectFactory, ProviderFactory providerFactory) {
3436
this.objectFactory = objectFactory;
37+
this.providerFactory = providerFactory;
3538
}
3639

3740
@InputFiles
3841
public FileCollection getResolvedArtifacts() {
39-
return objectFactory.fileCollection()
40-
.from(configs.stream().filter(ResolveAllDependencies::canBeResolved).collect(Collectors.toList()));
42+
return objectFactory.fileCollection().from(configs.stream().filter(ResolveAllDependencies::canBeResolved).map(c -> {
43+
// Make a copy of the configuration, omitting file collection dependencies to avoid building project artifacts
44+
Configuration copy = c.copyRecursive(d -> d instanceof FileCollectionDependency == false);
45+
copy.setCanBeConsumed(false);
46+
return copy;
47+
})
48+
// Include only module dependencies, ignoring things like project dependencies so we don't unnecessarily build stuff
49+
.map(c -> c.getIncoming().artifactView(v -> v.lenient(true).componentFilter(i -> i instanceof ModuleComponentIdentifier)))
50+
.map(artifactView -> providerFactory.provider(artifactView::getFiles))
51+
.collect(Collectors.toList()));
4152
}
4253

4354
@TaskAction
@@ -55,6 +66,7 @@ private static boolean canBeResolved(Configuration configuration) {
5566
return false;
5667
}
5768
}
58-
return configuration.getName().startsWith(DISTRO_EXTRACTED_CONFIG_PREFIX) == false;
69+
70+
return true;
5971
}
6072
}

0 commit comments

Comments
 (0)