import org.eclipse.aether.resolution.DependencyRequest; //导入方法依赖的package包/类
/**
* Returns a filtered list of artifacts that the given (unresolved) artifact has as dependencies.
*
*
The first artifact is converted into the root dependency that is passed to
* {@link CollectRequest#CollectRequest(Dependency, List, List)}. The root dependency is used, among other things,
* to determine the managed dependencies. In other words, {@code unresolvedArtifacts} should not be treated as set,
* the order (and in particular, which element comes first) is significant.
*
* @param dependencyFilter filter for nodes in the dependency graph; may be null
* @param unresolvedArtifacts the artifacts that should be resolved, including their version-managed and merged
* transitive dependencies
* @param scope Scope of root node in the dependency graph. If {@code dependencyFilter} filters on the scope, then
* this should match the requested scope. Otherwise, this parameter will not have an effect. May be
* {@code null}.
* @return List of artifacts that the given (unresolved) artifact has as dependencies. The list only contains the
* artifacts of {@link DependencyNode} instances for that {@code dependencyFilter} returns {@code true}.
* Note that the returned list is inclusive of {@code unresolvedArtifact}.
* @throws NullPointerException if {@code unresolvedArtifact} is {@code null}
* @throws RepositoryException if one or more artifacts cannot be resolved
*/
public List resolveArtifacts(@Nullable DependencyFilter dependencyFilter,
List unresolvedArtifacts, @Nullable String scope) throws RepositoryException {
List dependencies = unresolvedArtifacts.stream()
.map(unresolved -> new Dependency(unresolved, scope))
.collect(Collectors.toList());
if (dependencies.isEmpty()) {
return Collections.emptyList();
}
CollectRequest collectRequest
= new CollectRequest(dependencies.get(0), dependencies.subList(1, dependencies.size()), remoteRepositories);
DependencyNode node = repositorySystem
.collectDependencies(repositorySystemSession, collectRequest)
.getRoot();
DependencyRequest dependencyRequest = new DependencyRequest();
dependencyRequest.setRoot(node);
// setFilter() allows null arguments.
dependencyRequest.setFilter(dependencyFilter);
repositorySystem.resolveDependencies(repositorySystemSession, dependencyRequest);
PreorderNodeListGenerator nodeListGenerator = new PreorderNodeListGenerator();
node.accept(nodeListGenerator);
return nodeListGenerator.getArtifacts(false);
}