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); } }
private List<Artifact> resolveArtifacts(DependencyRequest dependencyRequest) { DependencyResult dependencyResult; try { dependencyResult = repositorySystem.resolveDependencies(repositorySystemSession, dependencyRequest); } catch (DependencyResolutionException e) { dependencyResult = e.getResult(); } List<ArtifactResult> artifactResults = dependencyResult.getArtifactResults(); List<Artifact> artifacts = new ArrayList<>(artifactResults.size()); for (ArtifactResult artifactResult : artifactResults) { if (artifactResult.isMissing()) { artifacts.add(artifactResult.getRequest().getArtifact()); } else { artifacts.add(artifactResult.getArtifact()); } } return Collections.unmodifiableList(artifacts); }
@Override public List<DependencyResource> resolveDependencies( Dependency dep, final List<DependencyRepository> repositories) { List<DependencyResource> result = new ArrayList<DependencyResource>(); try { if (Strings.isNullOrEmpty(dep.getVersion())) { dep = DependencyBuilder.create(dep).setVersion("[,)"); } RepositorySystem system = container.lookup(RepositorySystem.class); MavenRepositorySystemSession session = setupRepoSession(system); DefaultArtifact artifact = new DefaultArtifact(dep.toCoordinates()); CollectRequest collectRequest = new CollectRequest( new org.sonatype.aether.graph.Dependency(artifact, null), convertToMavenRepos(repositories)); DependencyRequest request = new DependencyRequest(collectRequest, null); DependencyResult artifacts = system.resolveDependencies(session, request); for (ArtifactResult a : artifacts.getArtifactResults()) { File file = a.getArtifact().getFile(); Dependency d = DependencyBuilder.create() .setArtifactId(a.getArtifact().getArtifactId()) .setGroupId(a.getArtifact().getGroupId()) .setVersion(a.getArtifact().getVersion()); DependencyResource resource = new DependencyResource(factory, file, d); result.add(resource); } return result; } catch (Exception e) { throw new ProjectModelException("Unable to resolve an artifact", e); } }
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()); }
@Override public BundleInformation installFromRepository(String featureId, boolean start) { org.apache.maven.repository.internal.DefaultServiceLocator locator = new org.apache.maven.repository.internal.DefaultServiceLocator(); locator.addService(RepositoryConnectorFactory.class, WagonRepositoryConnectorFactory.class); locator.setServices(WagonProvider.class, new HttpWagonProvider()); RepositorySystem system = locator.getService(RepositorySystem.class); // RepositorySystem system = null; try { // system = new DefaultPlexusContainer().lookup(RepositorySystem.class); MavenRepositorySystemSession mvnRepository = new MavenRepositorySystemSession(); mvnRepository.setLocalRepositoryManager( system.newLocalRepositoryManager( new LocalRepository(System.getProperty("java.io.tmpdir") + "/repo"))); CollectRequest collectRequest = new CollectRequest(); collectRequest.setRoot(new Dependency(new DefaultArtifact(featureId), JavaScopes.RUNTIME)); collectRequest.addRepository( new RemoteRepository( "central", "default", "http://nexus.motechproject.org/content/repositories/public")); DependencyRequest dependencyRequest = new DependencyRequest( collectRequest, DependencyFilterUtils.classpathFilter(JavaScopes.RUNTIME)); BundleInformation bundleInformation = null; List<ArtifactResult> artifactResults = system.resolveDependencies(mvnRepository, dependencyRequest).getArtifactResults(); List<Bundle> bundlesInstalled = new ArrayList<>(); for (ArtifactResult artifact : artifactResults) { LOG.info("Installing " + artifact); final File bundleFile = artifact.getArtifact().getFile(); FileInputStream fileInputStream = null; try { fileInputStream = new FileInputStream(bundleFile); final File bundleFileToInstall = bundleDirectoryManager.saveBundleStreamToFile(bundleFile.getName(), fileInputStream); final Bundle bundle = installBundleFromFile(bundleFileToInstall, false, false); if (bundle != null) { bundlesInstalled.add(bundle); } } finally { IOUtils.closeQuietly(fileInputStream); } } // start bundles after all bundles installed to avoid any dependency resolution problems. if (start) { for (Bundle bundle : bundlesInstalled) { if (!isFragmentBundle(bundle)) { bundle.start(); } } } return bundleInformation; } catch (Exception e) { LOG.error("Error while installing bundle and dependencies " + featureId, e); throw new MotechException("Cannot install file", e); } }