slawekjaranowski commented on code in PR #382: URL: https://github.com/apache/maven-dependency-plugin/pull/382#discussion_r1578483646
########## src/main/java/org/apache/maven/plugins/dependency/utils/ResolverUtil.java: ########## @@ -68,4 +85,152 @@ public Collection<Dependency> collectDependencies(Dependency root) throws Depend result.getRoot().accept(nodeListGenerator); return nodeListGenerator.getDependencies(true); } + + /** + * Resolve given artifact + * + * @param artifact an artifact to resolve + * @param repositories remote repositories list + * @return resolved artifact + * @throws ArtifactResolutionException If the artifact could not be resolved. + */ + public Artifact resolveArtifact(Artifact artifact, List<RemoteRepository> repositories) + throws ArtifactResolutionException { + MavenSession session = mavenSessionProvider.get(); + ArtifactRequest request = new ArtifactRequest(artifact, repositories, null); + ArtifactResult result = repositorySystem.resolveArtifact(session.getRepositorySession(), request); + return result.getArtifact(); + } + + /** + * Resolve transitive dependencies for artifact. + * + * @param artifact an artifact to resolve + * @param repositories remote repositories list + * @return list of transitive dependencies for artifact + * @throws DependencyResolutionException If the dependency tree could not be built or any dependency artifact could + * not be resolved. + */ + public List<Artifact> resolveDependencies(Artifact artifact, List<RemoteRepository> repositories) + throws DependencyResolutionException { + MavenSession session = mavenSessionProvider.get(); + + CollectRequest collectRequest = new CollectRequest(new Dependency(artifact, null), repositories); + DependencyRequest request = new DependencyRequest(collectRequest, null); + DependencyResult result = repositorySystem.resolveDependencies(session.getRepositorySession(), request); + return result.getArtifactResults().stream() + .map(ArtifactResult::getArtifact) + .collect(Collectors.toList()); + } + + /** + * Prepare a remote repositories list for given descriptions. + * + * @param repositories remote repositories descriptions + * @return a list of remote repositories + */ + public List<RemoteRepository> remoteRepositories(List<String> repositories) { + MavenSession mavenSession = mavenSessionProvider.get(); + List<RemoteRepository> projectRepositories = + mavenSession.getCurrentProject().getRemoteProjectRepositories(); + if (repositories == null || repositories.isEmpty()) { + return projectRepositories; + } + + List<RemoteRepository> repositoriesList = + repositories.stream().map(this::prepareRemoteRepository).collect(Collectors.toList()); + repositoriesList = + repositorySystem.newResolutionRepositories(mavenSession.getRepositorySession(), repositoriesList); + + List<RemoteRepository> result = new ArrayList<>(projectRepositories); + result.addAll(repositoriesList); + return result; + } + + // protected for testing purpose + protected RemoteRepository prepareRemoteRepository(String repository) { Review Comment: it is only used for resolving / collecting artifacts -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@maven.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org