1 package org.apache.maven.shared.dependencies.collect.internal;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.model.Dependency;
23 import org.apache.maven.model.Model;
24 import org.apache.maven.project.ProjectBuildingRequest;
25 import org.apache.maven.shared.dependencies.DependableCoordinate;
26 import org.apache.maven.shared.dependencies.collect.CollectorResult;
27 import org.apache.maven.shared.dependencies.collect.DependencyCollector;
28 import org.apache.maven.shared.dependencies.collect.DependencyCollectorException;
29 import org.codehaus.plexus.PlexusConstants;
30 import org.codehaus.plexus.PlexusContainer;
31 import org.codehaus.plexus.component.annotations.Component;
32 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
33 import org.codehaus.plexus.context.Context;
34 import org.codehaus.plexus.context.ContextException;
35 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
36
37
38
39
40
41
42 @Component( role = DependencyCollector.class, hint = "default" )
43 public class DefaultDependencyCollector implements DependencyCollector, Contextualizable
44 {
45 private PlexusContainer container;
46
47 @Override
48 public CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, Dependency root )
49 throws DependencyCollectorException
50 {
51 try
52 {
53 String hint = isMaven31() ? "maven31" : "maven3";
54
55 DependencyCollector effectiveDependencyCollector = container.lookup( DependencyCollector.class, hint );
56
57 return effectiveDependencyCollector.collectDependencies( buildingRequest, root );
58 }
59 catch ( ComponentLookupException e )
60 {
61 throw new DependencyCollectorException( e.getMessage(), e );
62 }
63 }
64
65 @Override
66 public CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, DependableCoordinate root )
67 throws DependencyCollectorException
68 {
69 try
70 {
71 String hint = isMaven31() ? "maven31" : "maven3";
72
73 DependencyCollector effectiveDependencyCollector = container.lookup( DependencyCollector.class, hint );
74
75 return effectiveDependencyCollector.collectDependencies( buildingRequest, root );
76 }
77 catch ( ComponentLookupException e )
78 {
79 throw new DependencyCollectorException( e.getMessage(), e );
80 }
81 }
82
83 @Override
84 public CollectorResult collectDependencies( ProjectBuildingRequest buildingRequest, Model root )
85 throws DependencyCollectorException
86 {
87 try
88 {
89 String hint = isMaven31() ? "maven31" : "maven3";
90
91 DependencyCollector effectiveDependencyCollector = container.lookup( DependencyCollector.class, hint );
92
93 return effectiveDependencyCollector.collectDependencies( buildingRequest, root );
94 }
95 catch ( ComponentLookupException e )
96 {
97 throw new DependencyCollectorException( e.getMessage(), e );
98 }
99 }
100
101
102
103
104 protected static boolean isMaven31()
105 {
106 return canFindCoreClass( "org.eclipse.aether.artifact.Artifact" );
107 }
108
109 private static boolean canFindCoreClass( String className )
110 {
111 try
112 {
113 Thread.currentThread().getContextClassLoader().loadClass( className );
114
115 return true;
116 }
117 catch ( ClassNotFoundException e )
118 {
119 return false;
120 }
121 }
122
123
124
125
126
127
128
129 public void contextualize( Context context )
130 throws ContextException
131 {
132 container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY );
133 }
134
135 }