/** * Creates a new Maven-like repository system session by initializing the session with values * typical for Maven-based resolution. In more detail, this method configures settings relevant * for the processing of dependency graphs, most other settings remain at their generic default * value. Use the various setters to further configure the session with authentication, mirror, * proxy and other information required for your environment. * * @return The new repository system session, never {@code null}. */ public static DefaultRepositorySystemSession newSession() { DefaultRepositorySystemSession session = new DefaultRepositorySystemSession(); DependencyTraverser depTraverser = new FatArtifactTraverser(); session.setDependencyTraverser(depTraverser); DependencyManager depManager = new ClassicDependencyManager(); session.setDependencyManager(depManager); DependencySelector depFilter = new AndDependencySelector( new ScopeDependencySelector("test", "provided"), new OptionalDependencySelector(), new ExclusionDependencySelector()); session.setDependencySelector(depFilter); DependencyGraphTransformer transformer = new ConflictResolver( new NearestVersionSelector(), new JavaScopeSelector(), new SimpleOptionalitySelector(), new JavaScopeDeriver()); session.setDependencyGraphTransformer( new ChainedDependencyGraphTransformer(transformer, new JavaDependencyContextRefiner())); DefaultArtifactTypeRegistry stereotypes = new DefaultArtifactTypeRegistry(); stereotypes.add(new DefaultArtifactType("pom")); stereotypes.add(new DefaultArtifactType("maven-plugin", "jar", "", "java")); stereotypes.add(new DefaultArtifactType("jar", "jar", "", "java")); stereotypes.add(new DefaultArtifactType("ejb", "jar", "", "java")); stereotypes.add(new DefaultArtifactType("ejb-client", "jar", "client", "java")); stereotypes.add(new DefaultArtifactType("test-jar", "jar", "tests", "java")); stereotypes.add(new DefaultArtifactType("javadoc", "jar", "javadoc", "java")); stereotypes.add(new DefaultArtifactType("java-source", "jar", "sources", "java", false, false)); stereotypes.add(new DefaultArtifactType("war", "war", "", "java", false, true)); stereotypes.add(new DefaultArtifactType("ear", "ear", "", "java", false, true)); stereotypes.add(new DefaultArtifactType("rar", "rar", "", "java", false, true)); stereotypes.add(new DefaultArtifactType("par", "par", "", "java", false, true)); session.setArtifactTypeRegistry(stereotypes); session.setArtifactDescriptorPolicy(new SimpleArtifactDescriptorPolicy(true, true)); final Properties systemProperties = new Properties(); // MNG-5670 guard against ConcurrentModificationException // MNG-6053 guard against key without value Properties sysProp = System.getProperties(); synchronized (sysProp) { systemProperties.putAll(sysProp); } session.setSystemProperties(systemProperties); session.setConfigProperties(systemProperties); return session; }