1   package org.apache.maven.repository.internal;
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  
20  
21  
22  import java.util.Properties;
23  
24  import org.eclipse.aether.DefaultRepositorySystemSession;
25  import org.eclipse.aether.artifact.DefaultArtifactType;
26  import org.eclipse.aether.collection.DependencyGraphTransformer;
27  import org.eclipse.aether.collection.DependencyManager;
28  import org.eclipse.aether.collection.DependencySelector;
29  import org.eclipse.aether.collection.DependencyTraverser;
30  import org.eclipse.aether.impl.ArtifactDescriptorReader;
31  import org.eclipse.aether.impl.DefaultServiceLocator;
32  import org.eclipse.aether.impl.MetadataGeneratorFactory;
33  import org.eclipse.aether.impl.VersionRangeResolver;
34  import org.eclipse.aether.impl.VersionResolver;
35  import org.eclipse.aether.util.artifact.DefaultArtifactTypeRegistry;
36  import org.eclipse.aether.util.graph.manager.ClassicDependencyManager;
37  import org.eclipse.aether.util.graph.selector.AndDependencySelector;
38  import org.eclipse.aether.util.graph.selector.ExclusionDependencySelector;
39  import org.eclipse.aether.util.graph.selector.OptionalDependencySelector;
40  import org.eclipse.aether.util.graph.selector.ScopeDependencySelector;
41  import org.eclipse.aether.util.graph.transformer.ChainedDependencyGraphTransformer;
42  import org.eclipse.aether.util.graph.transformer.ConflictResolver;
43  import org.eclipse.aether.util.graph.transformer.JavaDependencyContextRefiner;
44  import org.eclipse.aether.util.graph.transformer.JavaScopeDeriver;
45  import org.eclipse.aether.util.graph.transformer.JavaScopeSelector;
46  import org.eclipse.aether.util.graph.transformer.NearestVersionSelector;
47  import org.eclipse.aether.util.graph.transformer.SimpleOptionalitySelector;
48  import org.eclipse.aether.util.graph.traverser.FatArtifactTraverser;
49  import org.eclipse.aether.util.repository.SimpleArtifactDescriptorPolicy;
50  
51  
52  
53  
54  
55  
56  
57  
58  public final class MavenRepositorySystemUtils
59  {
60  
61      private MavenRepositorySystemUtils()
62      {
63          
64      }
65  
66      
67  
68  
69  
70  
71  
72      public static DefaultServiceLocator newServiceLocator()
73      {
74          DefaultServiceLocator locator = new DefaultServiceLocator();
75          locator.addService( ArtifactDescriptorReader.class, DefaultArtifactDescriptorReader.class );
76          locator.addService( VersionResolver.class, DefaultVersionResolver.class );
77          locator.addService( VersionRangeResolver.class, DefaultVersionRangeResolver.class );
78          locator.addService( MetadataGeneratorFactory.class, SnapshotMetadataGeneratorFactory.class );
79          locator.addService( MetadataGeneratorFactory.class, VersionsMetadataGeneratorFactory.class );
80          return locator;
81      }
82  
83      
84  
85  
86  
87  
88  
89  
90  
91      public static DefaultRepositorySystemSession newSession()
92      {
93          DefaultRepositorySystemSession session = new DefaultRepositorySystemSession();
94  
95          DependencyTraverser depTraverser = new FatArtifactTraverser();
96          session.setDependencyTraverser( depTraverser );
97  
98          DependencyManager depManager = new ClassicDependencyManager();
99          session.setDependencyManager( depManager );
100 
101         DependencySelector depFilter =
102             new AndDependencySelector( new ScopeDependencySelector( "test", "provided" ),
103                                        new OptionalDependencySelector(), new ExclusionDependencySelector() );
104         session.setDependencySelector( depFilter );
105 
106         DependencyGraphTransformer transformer =
107             new ConflictResolver( new NearestVersionSelector(), new JavaScopeSelector(),
108                                   new SimpleOptionalitySelector(), new JavaScopeDeriver() );
109         new ChainedDependencyGraphTransformer( transformer, new JavaDependencyContextRefiner() );
110         session.setDependencyGraphTransformer( transformer );
111 
112         DefaultArtifactTypeRegistry stereotypes = new DefaultArtifactTypeRegistry();
113         stereotypes.add( new DefaultArtifactType( "pom" ) );
114         stereotypes.add( new DefaultArtifactType( "maven-plugin", "jar", "", "java" ) );
115         stereotypes.add( new DefaultArtifactType( "jar", "jar", "", "java" ) );
116         stereotypes.add( new DefaultArtifactType( "ejb", "jar", "", "java" ) );
117         stereotypes.add( new DefaultArtifactType( "ejb-client", "jar", "client", "java" ) );
118         stereotypes.add( new DefaultArtifactType( "test-jar", "jar", "tests", "java" ) );
119         stereotypes.add( new DefaultArtifactType( "javadoc", "jar", "javadoc", "java" ) );
120         stereotypes.add( new DefaultArtifactType( "java-source", "jar", "sources", "java", false, false ) );
121         stereotypes.add( new DefaultArtifactType( "war", "war", "", "java", false, true ) );
122         stereotypes.add( new DefaultArtifactType( "ear", "ear", "", "java", false, true ) );
123         stereotypes.add( new DefaultArtifactType( "rar", "rar", "", "java", false, true ) );
124         stereotypes.add( new DefaultArtifactType( "par", "par", "", "java", false, true ) );
125         session.setArtifactTypeRegistry( stereotypes );
126 
127         session.setArtifactDescriptorPolicy( new SimpleArtifactDescriptorPolicy( true, true ) );
128 
129         final Properties systemProperties = new Properties();
130         
131         
132         
133         Properties sysProp = System.getProperties();
134         synchronized ( sysProp )
135         {
136             systemProperties.putAll( sysProp );
137         }
138 
139         session.setSystemProperties( systemProperties );
140         session.setConfigProperties( systemProperties );
141 
142         return session;
143     }
144 
145 }