cstamas commented on code in PR #382:
URL: 
https://github.com/apache/maven-dependency-plugin/pull/382#discussion_r1578024626


##########
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:
   if you resolve/deploy with this repo, you must pass it thru RepoSyste 
newDeploymentRepository or alike method (to have it mirrors/proxies/auth set).



-- 
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

Reply via email to