private Set<Artifact> processTransientDependencies(Dependency dependency, boolean sharedLibraries) throws MojoExecutionException { try { final Set<Artifact> artifacts = new LinkedHashSet<Artifact>(); final CollectRequest collectRequest = new CollectRequest(); collectRequest.setRoot(dependency); collectRequest.setRepositories(projectRepos); final DependencyNode node = repoSystem.collectDependencies(repoSession, collectRequest).getRoot(); final DependencyRequest dependencyRequest = new DependencyRequest( node, new AndDependencyFilter( new ScopeDependencyFilter( Arrays.asList("compile", "runtime"), Arrays.asList("test")), // Also exclude any optional dependencies new DependencyFilter() { @Override public boolean accept( DependencyNode dependencyNode, List<DependencyNode> dependencyNodes) { return !dependencyNode.getDependency().isOptional(); } })); repoSystem.resolveDependencies(repoSession, dependencyRequest); PreorderNodeListGenerator nlg = new PreorderNodeListGenerator(); node.accept(nlg); final List<Dependency> dependencies = nlg.getDependencies(false); for (Dependency dep : dependencies) { final org.sonatype.aether.artifact.Artifact depAetherArtifact = dep.getArtifact(); if (isNativeLibrary(sharedLibraries, depAetherArtifact.getExtension())) { final Artifact mavenArtifact = artifactFactory.createDependencyArtifact( depAetherArtifact.getGroupId(), depAetherArtifact.getArtifactId(), VersionRange.createFromVersion(depAetherArtifact.getVersion()), depAetherArtifact.getExtension(), depAetherArtifact.getClassifier(), dep.getScope()); mavenArtifact.setFile(depAetherArtifact.getFile()); artifacts.add(mavenArtifact); } } return artifacts; } catch (Exception e) { throw new MojoExecutionException("Error while processing transient dependencies", e); } }
/** Verify operation manually. */ public static void main(String[] args) throws Exception { final Logger log = logger(); final RepositorySystem system = newSystem(); final RepositorySystemSession session = newSession(system); // String uri = "jmock:jmock:pom:1.1.0"; String uri = "org.apache.maven:maven-profile:2.2.1"; final Artifact artifact = new DefaultArtifact(uri); final Dependency dependency = new Dependency(artifact, "compile"); final RemoteRepository central = newRepoRemote(); final CollectRequest collectRequest = new CollectRequest(); collectRequest.setRoot(dependency); collectRequest.addRepository(central); final DependencyNode collectNode = system.collectDependencies(session, collectRequest).getRoot(); final List<String> include = new ArrayList<String>(); final List<String> exclude = new ArrayList<String>(); final DependencyFilter filter = new ScopeDependencyFilter(include, exclude); final DependencyRequest dependencyRequest = new DependencyRequest(collectNode, filter); final DependencyResult result = system.resolveDependencies(session, dependencyRequest); final DependencyNode resolveNode = result.getRoot(); final PreorderNodeListGenerator generator = new PreorderNodeListGenerator(); resolveNode.accept(generator); final String[] pathArray = generator.getClassPath().split(File.pathSeparator); for (String path : pathArray) { log.info("path = " + path); } // final MavenProject project = newProject("org.apache.maven:maven-model:pom:3.0"); log.info("project = " + project); }
public static void main(String[] args) throws Exception { final String uri = "com.carrotgarden.osgi:carrot-osgi-anno-scr-make:jar:1.1.3"; final Artifact artifact = new DefaultArtifact(uri); Dependency dependency = new Dependency(artifact, "compile"); CollectRequest collectRequest = new CollectRequest(dependency, null); RepositorySystem system = UnitHelp.newSystem(); MavenRepositorySystemSession session = UnitHelp.newSession(system); session.setOffline(true); Collection<String> scopeIncluded = new ArrayList<String>(); Collection<String> scopeExcluded = new ArrayList<String>(); scopeIncluded.add("provided"); scopeExcluded.add("test"); session.setDependencySelector( // new AndDependencySelector( // new OptionalDependencySelector(), // new ScopeDependencySelector(scopeIncluded, scopeExcluded), // new ExclusionDependencySelector()) // ); CollectResult collectResult = system.collectDependencies(session, collectRequest); DependencyNode collectNode = collectResult.getRoot(); final DependencyRequest dependencyRequest = new DependencyRequest(collectNode, null); final DependencyResult result = system.resolveDependencies(session, dependencyRequest); final DependencyNode resolveNode = result.getRoot(); final PreorderNodeListGenerator generator = new PreorderNodeListGenerator(); resolveNode.accept(generator); List<Artifact> list = generator.getArtifacts(true); for (Artifact item : list) { System.out.println("item = " + item); } }
public AetherResult resolve( String groupId, String artifactId, String version, String extension, String classifier) throws PlexusContainerException, ComponentLookupException, DependencyCollectionException, ArtifactResolutionException, DependencyResolutionException { if (Strings.isBlank(extension) || extension.equals("bundle")) { extension = DEFAULT_EXTENSION; } if (classifier == null) { classifier = DEFAULT_CLASSIFIER; } RepositorySystemSession session = newSession(); Dependency dependency = new Dependency( new DefaultArtifact(groupId, artifactId, classifier, extension, version), "runtime"); CollectRequest collectRequest = new CollectRequest(); collectRequest.setRoot(dependency); List<RemoteRepository> repos = getRemoteRepositories(); RemoteRepository[] repoArray = new RemoteRepository[repos.size()]; repos.toArray(repoArray); for (RemoteRepository repo : repoArray) { collectRequest.addRepository(repo); } RepositorySystem system = getRepositorySystem(); DependencyNode rootNode = system.collectDependencies(session, collectRequest).getRoot(); DependencyRequest dependencyRequest = new DependencyRequest(); dependencyRequest.setRoot(rootNode); system.resolveDependencies(session, dependencyRequest); PreorderNodeListGenerator nlg = new PreorderNodeListGenerator(); rootNode.accept(nlg); return new AetherResult(rootNode, nlg.getFiles(), nlg.getClassPath()); }