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
<[email protected]>:
> 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
[email protected] - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]