For Aries, I ended up doing:

    @Component
    private org.apache.maven.repository.RepositorySystem repository;

    private File resolve(String artifactDescriptor) {
        String[] s = artifactDescriptor.split(":");

        String type = (s.length >= 4 ? s[3] : "jar");
        Artifact artifact = repository.createArtifact(s[0], s[1], s[2], type);

        ArtifactResolutionRequest request = new ArtifactResolutionRequest();
        request.setArtifact(artifact);
        
        request.setResolveRoot(true).setResolveTransitively(false);
        request.setServers( session.getRequest().getServers() );
        request.setMirrors( session.getRequest().getMirrors() );
        request.setProxies( session.getRequest().getProxies() );
        request.setLocalRepository(session.getLocalRepository());
        
request.setRemoteRepositories(session.getRequest().getRemoteRepositories());
        repository.resolve(request);
        return artifact.getFile();
    }

If you set “setResolveTransitively(true)” then the ArtifactResolutionResponse 
would have all the deps available in it.

That seems to work for both Maven 3.0 and 3.1/3.2.

Dan


Op Thu, 19 Jun 2014 00:01:52 +0200 schreef William Ferguson 
<william.fergu...@xandar.com.au>:

> I asked on maven-users but didn't get any viable responses. So I'm hoping
> someone here can help.
> 
> --------------------------
> I have a Mojo that needs to work with Maven 3.0.* and 3.1+
> 
> In the Mojo I have an Artifact and I need to resolve it's dependencies. How
> can/should I do it?
> 
> If I can resolve the Artifact to a MavenProject then I can use
> DependencyGraphBuilder (from maven-dependency-tree) to construct a graph of
> the deps. But I'm struggling to make the Artifact to MavenProject
> conversion happen.
> 
> I thought that If I could get a URL to the Artifact's POM file then I could
> use DefaultMavenRuntime (maven-runtime) to resolve the URL into a
> MavenProject. But
> 
>   1. I can't work out how to get a URL to the artifact's POM file (it
>   needs to handle both reactor artifacts and repo artifacts)
>   2. Even with a URL to the POM file, MavenRuntime#getProject) is
>   returning null.
> 
> Can someone please point me in the right direction?
> Am I even on the right path or is there a much more straight forward way of
> getting the dependencies for the Artifact?
> --------------------------
> 
> William


-- 
Daniel Kulp
dk...@apache.org - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@maven.apache.org
For additional commands, e-mail: dev-h...@maven.apache.org

Reply via email to