[ https://issues.apache.org/jira/browse/MDEP-924?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17840568#comment-17840568 ]
ASF GitHub Bot commented on MDEP-924: ------------------------------------- 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 > Get rid of maven-artifact-transfer from list-classes goal > --------------------------------------------------------- > > Key: MDEP-924 > URL: https://issues.apache.org/jira/browse/MDEP-924 > Project: Maven Dependency Plugin > Issue Type: Improvement > Components: list-classes > Reporter: Slawomir Jaranowski > Assignee: Slawomir Jaranowski > Priority: Major > Fix For: 3.7.0 > > > We can use Resolver API > Done in simple Mojo as preparing for other. -- This message was sent by Atlassian Jira (v8.20.10#820010)