private List<Artifact> resolveExtensionArtifacts( Plugin extensionPlugin, List<RemoteRepository> repositories, RepositorySystemSession session ) throws PluginResolutionException { DependencyNode root = pluginDependenciesResolver.resolve( extensionPlugin, null, null, repositories, session ); PreorderNodeListGenerator nlg = new PreorderNodeListGenerator(); root.accept( nlg ); return toMavenArtifacts( root, nlg ); }
private List<Artifact> resolveExtension( CoreExtension extension, RepositorySystemSession repoSession, List<RemoteRepository> repositories, DependencyFilter dependencyFilter ) throws PluginResolutionException { Plugin plugin = new Plugin(); plugin.setGroupId( extension.getGroupId() ); plugin.setArtifactId( extension.getArtifactId() ); plugin.setVersion( extension.getVersion() ); DependencyNode root = pluginDependenciesResolver.resolveCoreExtension( plugin, dependencyFilter, repositories, repoSession ); PreorderNodeListGenerator nlg = new PreorderNodeListGenerator(); root.accept( nlg ); List<Artifact> artifacts = nlg.getArtifacts( false ); return artifacts; } }
private void createPluginRealm( PluginDescriptor pluginDescriptor, MavenSession session, ClassLoader parent, Map<String, ClassLoader> foreignImports, DependencyFilter filter ) throws PluginResolutionException, PluginContainerException { Plugin plugin = Objects.requireNonNull( pluginDescriptor.getPlugin(), "pluginDescriptor.plugin cannot be null" ); Artifact pluginArtifact = Objects.requireNonNull( pluginDescriptor.getPluginArtifact(), "pluginDescriptor.pluginArtifact cannot be null" ); MavenProject project = session.getCurrentProject(); final ClassRealm pluginRealm; final List<Artifact> pluginArtifacts; RepositorySystemSession repositorySession = session.getRepositorySession(); DependencyFilter dependencyFilter = project.getExtensionDependencyFilter(); dependencyFilter = AndDependencyFilter.newInstance( dependencyFilter, filter ); DependencyNode root = pluginDependenciesResolver.resolve( plugin, RepositoryUtils.toArtifact( pluginArtifact ), dependencyFilter, project.getRemotePluginRepositories(), repositorySession ); PreorderNodeListGenerator nlg = new PreorderNodeListGenerator(); root.accept( nlg ); pluginArtifacts = toMavenArtifacts( root, nlg ); pluginRealm = classRealmManager.createPluginRealm( plugin, parent, null, foreignImports, toAetherArtifacts( pluginArtifacts ) ); discoverPluginComponents( pluginRealm, plugin, pluginDescriptor ); pluginDescriptor.setClassRealm( pluginRealm ); pluginDescriptor.setArtifacts( pluginArtifacts ); }
private void logDependencyGraph(DependencyNode node, Object request) { if (logger.isTraceEnabled()) { PathRecordingDependencyVisitor visitor = new PathRecordingDependencyVisitor(null, false); node.accept(visitor); logger.trace("******* Dependency Graph calculated for {} with request: '{}' *******", request.getClass().getSimpleName(), request); visitor.getPaths().stream().forEach( pathList -> logger.trace(on(" -> ") .join(pathList.stream().filter(path -> path != null).collect(toList())))); logger.trace("******* End of dependency Graph *******"); } }
node.accept( new GraphLogger( project ) );
/** * Traverse the {@link DependencyNode} to get the files for each artifact. * * @param node {@link DependencyNode} that represents the dependency graph * @return {@link List} of {@link File}s for each artifact resolved */ private List<File> getFiles(DependencyNode node) { PreorderNodeListGenerator nlg = new PreorderNodeListGenerator(); node.accept(nlg); return nlg.getFiles().stream().map(File::getAbsoluteFile).collect(toList()); }
/** * Logs the paths for each dependency not found * * @param node root {@link DependencyNode}, can be a "null" root (imaginary root) * @param e {@link DependencyResolutionException} the error to collect paths. */ private void logUnresolvedArtifacts(DependencyNode node, DependencyResolutionException e) { List<ArtifactResult> artifactResults = e.getResult().getArtifactResults().stream() .filter(artifactResult -> !artifactResult.getExceptions().isEmpty()).collect(toList()); final List<String> patternInclusion = artifactResults.stream().map(artifactResult -> toId(artifactResult.getRequest().getArtifact())).collect(toList()); PathRecordingDependencyVisitor visitor = new PathRecordingDependencyVisitor(new PatternInclusionsDependencyFilter(patternInclusion), node.getArtifact() != null); node.accept(visitor); visitor.getPaths().stream().forEach(path -> { List<DependencyNode> unresolvedArtifactPath = path.stream().filter(dependencyNode -> dependencyNode.getArtifact() != null).collect(toList()); if (!unresolvedArtifactPath.isEmpty()) { logger.warn("Dependency path to not resolved artifacts -> {}", unresolvedArtifactPath.toString()); } }); }
node.accept( new GraphLogger() );
node.accept(nlg); for (Artifact cur : nlg.getArtifacts(false)) { urls.add(cur.getFile());
collectResult.getRoot().accept(nlg);
private void displayTree( DependencyNode node, StringBuilder sb ) { ByteArrayOutputStream os = new ByteArrayOutputStream( 1024 ); node.accept( new ConsoleDependencyGraphDumper( new PrintStream( os ) ) ); sb.append( os.toString() ); }
private void logDependencyGraph(DependencyNode node, Object request) { if (logger.isTraceEnabled()) { PathRecordingDependencyVisitor visitor = new PathRecordingDependencyVisitor(null, false); node.accept(visitor); logger.trace("******* Dependency Graph calculated for {} with request: '{}' *******", request.getClass().getSimpleName(), request); visitor.getPaths().stream().forEach( pathList -> logger.trace(on(" -> ") .join(pathList.stream().filter(path -> path != null).collect(toList())))); logger.trace("******* End of dependency Graph *******"); } }
/** * Traverse the {@link DependencyNode} to get the files for each artifact. * * @param node {@link DependencyNode} that represents the dependency graph * @return {@link List} of {@link File}s for each artifact resolved */ private List<File> getFiles(DependencyNode node) { PreorderNodeListGenerator nlg = new PreorderNodeListGenerator(); node.accept(nlg); return nlg.getFiles().stream().map(File::getAbsoluteFile).collect(toList()); }
public boolean accept( DependencyVisitor visitor ) { if ( visitor.visitEnter( this ) ) { for ( DependencyNode child : children ) { if ( !child.accept( visitor ) ) { break; } } } return visitor.visitLeave( this ); }
public boolean accept( DependencyVisitor visitor ) { if ( visitor.visitEnter( this ) ) { for ( DependencyNode child : children ) { if ( !child.accept( visitor ) ) { break; } } } return visitor.visitLeave( this ); }
private UnsolvableVersionConflictException newFailure( final ConflictContext context ) { DependencyFilter filter = new DependencyFilter() { public boolean accept( DependencyNode node, List<DependencyNode> parents ) { return context.isIncluded( node ); } }; PathRecordingDependencyVisitor visitor = new PathRecordingDependencyVisitor( filter ); context.getRoot().accept( visitor ); return new UnsolvableVersionConflictException( visitor.getPaths() ); }
private UnsolvableVersionConflictException newFailure( final ConflictContext context ) { DependencyFilter filter = new DependencyFilter() { public boolean accept( DependencyNode node, List<DependencyNode> parents ) { return context.isIncluded( node ); } }; PathRecordingDependencyVisitor visitor = new PathRecordingDependencyVisitor( filter ); context.getRoot().accept( visitor ); return new UnsolvableVersionConflictException( visitor.getPaths() ); }
protected DependencyNode getDependencyNode(PreorderNodeListGenerator nlg) throws Exception { CollectRequest collectRequest = DependencyUtils.getCollectRequest(project, repos, JavaScopes.RUNTIME); DependencyNode root = system.collectDependencies(session, collectRequest).getRoot(); DependencyRequest dependencyRequest = new DependencyRequest(root, null); system.resolveDependencies(session, dependencyRequest); root.accept(nlg); return root; }
public void buildDependencyGraph(MavenProject project, ArtifactFilter globalFilter, GraphBuilder<DependencyNode> graphBuilder) { DefaultDependencyResolutionRequest request = new DefaultDependencyResolutionRequest(); request.setMavenProject(project); request.setRepositorySession(getVerboseRepositorySession(project)); DependencyResolutionResult result; try { result = this.dependenciesResolver.resolve(request); } catch (DependencyResolutionException e) { throw new DependencyGraphException(e); } org.eclipse.aether.graph.DependencyNode root = result.getDependencyGraph(); ArtifactFilter transitiveDependencyFilter = createTransitiveDependencyFilter(project); GraphBuildingVisitor visitor = new GraphBuildingVisitor(graphBuilder, globalFilter, transitiveDependencyFilter, this.targetFilter, this.includedResolutions); root.accept(visitor); }
private List<Artifact> resolveExtension( CoreExtension extension, RepositorySystemSession repoSession, List<RemoteRepository> repositories, DependencyFilter dependencyFilter ) throws PluginResolutionException { Plugin plugin = new Plugin(); plugin.setGroupId( extension.getGroupId() ); plugin.setArtifactId( extension.getArtifactId() ); plugin.setVersion( extension.getVersion() ); DependencyNode root = pluginDependenciesResolver.resolveCoreExtension( plugin, dependencyFilter, repositories, repoSession ); PreorderNodeListGenerator nlg = new PreorderNodeListGenerator(); root.accept( nlg ); List<Artifact> artifacts = nlg.getArtifacts( false ); return artifacts; } }