1 package org
.argeo
.slc
.maven
.plugin
;
4 import java
.util
.Comparator
;
7 import java
.util
.TreeSet
;
9 import org
.apache
.maven
.artifact
.Artifact
;
10 import org
.apache
.maven
.artifact
.metadata
.ArtifactMetadataSource
;
11 import org
.apache
.maven
.artifact
.repository
.ArtifactRepository
;
12 import org
.apache
.maven
.artifact
.resolver
.ArtifactNotFoundException
;
13 import org
.apache
.maven
.artifact
.resolver
.ArtifactResolutionException
;
14 import org
.apache
.maven
.artifact
.resolver
.ArtifactResolutionResult
;
15 import org
.apache
.maven
.artifact
.versioning
.InvalidVersionSpecificationException
;
16 import org
.apache
.maven
.artifact
.versioning
.VersionRange
;
17 import org
.apache
.maven
.plugin
.MojoExecutionException
;
18 import org
.apache
.maven
.project
.MavenProject
;
19 import org
.apache
.maven
.project
.artifact
.InvalidDependencyVersionException
;
20 import org
.codehaus
.plexus
.archiver
.ArchiverException
;
21 import org
.codehaus
.plexus
.archiver
.UnArchiver
;
22 import org
.codehaus
.plexus
.archiver
.manager
.ArchiverManager
;
23 import org
.codehaus
.plexus
.archiver
.manager
.NoSuchArchiverException
;
26 * Abstract Maven plugin for interacting with dependencies
28 public class DefaultMavenDependencyManager
implements MavenDependencyManager
{
30 * Used to look up Artifacts in the remote repository.
32 * @parameter expression=
33 * "${component.org.apache.maven.artifact.factory.ArtifactFactory}"
37 protected org
.apache
.maven
.artifact
.factory
.ArtifactFactory factory
;
40 * Used to look up Artifacts in the remote repository.
42 * @parameter expression=
43 * "${component.org.apache.maven.artifact.resolver.ArtifactResolver}"
47 protected org
.apache
.maven
.artifact
.resolver
.ArtifactResolver resolver
;
50 * To look up Archiver/UnArchiver implementations
52 * @parameter expression=
53 * "${component.org.codehaus.plexus.archiver.manager.ArchiverManager}"
57 protected ArchiverManager archiverManager
;
60 protected ArtifactMetadataSource artifactMetadataSource
;
62 public DefaultMavenDependencyManager() {
65 public Artifact
getResolvedArtifact(List remoteRepos
,
66 ArtifactRepository local
, String groupId
, String artifactId
,
67 String version
, String type
, String classifier
, String scope
)
68 throws MojoExecutionException
{
71 vr
= VersionRange
.createFromVersionSpec(version
);
72 } catch (InvalidVersionSpecificationException e1
) {
74 vr
= VersionRange
.createFromVersion(version
);
77 Artifact qxSdkArtifact
= factory
.createDependencyArtifact(groupId
,
78 artifactId
, vr
, type
, classifier
, scope
);
80 resolver
.resolve(qxSdkArtifact
, remoteRepos
, local
);
81 } catch (ArtifactResolutionException e
) {
82 throw new MojoExecutionException("Unable to resolve artifact.", e
);
83 } catch (ArtifactNotFoundException e
) {
84 throw new MojoExecutionException("Unable to find artifact.", e
);
90 public void unpackArtifact(Artifact artifact
, File location
)
91 throws MojoExecutionException
{
92 File file
= artifact
.getFile();
94 UnArchiver unArchiver
;
95 unArchiver
= archiverManager
.getUnArchiver(file
);
96 unArchiver
.setSourceFile(file
);
97 unArchiver
.setDestDirectory(location
);
99 } catch (NoSuchArchiverException e
) {
100 throw new MojoExecutionException("Unknown archiver type", e
);
101 } catch (ArchiverException e
) {
103 throw new MojoExecutionException("Error unpacking file: " + file
104 + " to: " + location
+ "\r\n" + e
.toString(), e
);
108 public Set
getTransitiveProjectDependencies(MavenProject project
,
109 List remoteRepos
, ArtifactRepository local
)
110 throws InvalidDependencyVersionException
,
111 ArtifactNotFoundException
, ArtifactResolutionException
{
112 Set artifacts
= project
.createArtifacts(this.factory
, null, null);
114 ArtifactResolutionResult arr
= resolver
.resolveTransitively(artifacts
,
115 project
.getArtifact(), local
, remoteRepos
,
116 this.artifactMetadataSource
, null);
118 // Order, just for display
119 Set dependencies
= new TreeSet(new ArtifactComparator());
120 dependencies
.addAll(arr
.getArtifacts());
124 protected static class ArtifactComparator
implements Comparator
{
125 public int compare(Object o1
, Object o2
) {
126 Artifact a1
= (Artifact
) o1
;
127 Artifact a2
= (Artifact
) o2
;
129 if (!a1
.getGroupId().equals(a2
.getGroupId()))
130 return a1
.getGroupId().compareTo(a2
.getGroupId());
132 return a1
.getArtifactId().compareTo(a2
.getArtifactId());