in buildSrc/src/main/java/com/uber/okbuck/core/manager/DependencyManager.java [273:344]
private void updateDependencies(
Map<VersionlessDependency, Collection<OExternalDependency>> dependencyMap) {
ExternalDependenciesExtension extension = ProjectUtil.getExternalDependencyExtension(project);
// This code-path is when versionless & exported deps is enabled
if (!extension.versionlessExportedDepsEnabled()) {
return;
}
Configuration config = project.getConfigurations().create("okbuckDependencyResolver");
config.getDependencies().addAll(rawDependencies);
ResolvedConfiguration resolvedConfiguration = config.getResolvedConfiguration();
if (resolvedConfiguration.hasError()) {
// Throw failure if there was one during resolution
resolvedConfiguration.rethrowFailure();
}
resolvedConfiguration
.getLenientConfiguration()
.getAllModuleDependencies()
.forEach(
rDependency -> {
List<Collection<OExternalDependency>> oExternal =
DependencyFactory.fromDependency(rDependency)
.stream()
.peek(
it -> {
if (!dependencyMap.containsKey(it)) {
dependencyException(rDependency);
}
})
.map(dependencyMap::get)
.collect(Collectors.toList());
// Is a firstLevel dependency if it has a parent with no parents.
boolean firstLevel =
rDependency
.getParents()
.stream()
.anyMatch(parent -> parent.getParents().size() == 0);
// Update first level state.
oExternal
.stream()
.flatMap(Collection::stream)
.forEach(external -> external.updateFirstLevel(firstLevel));
Set<OExternalDependency> childDependencies =
childDependencies(rDependency, dependencyMap);
if (childDependencies.size() == 0) {
return;
}
oExternal
.stream()
.map(
dependencies -> {
Preconditions.checkArgument(
dependencies.size() == 1,
"Dependency having multiple versions can't have deps: m"
+ dependencies);
return dependencies.stream().findAny().get();
})
.forEach(
dependency -> {
dependency.addDeps(childDependencies);
});
});
}