@Override public void addMarkers(IResource pomResource, String type, MavenExecutionResult result) { SourceLocation defaultSourceLocation = new SourceLocation(1, 0, 0); List<MavenProblemInfo> allProblems = new ArrayList<MavenProblemInfo>(); allProblems.addAll( toMavenProblemInfos(pomResource, defaultSourceLocation, result.getExceptions())); MavenProject mavenProject = result.getProject(); DependencyResolutionResult resolutionResult = result.getDependencyResolutionResult(); if (resolutionResult != null) { allProblems.addAll( toMavenProblemInfos( pomResource, defaultSourceLocation, resolutionResult.getCollectionErrors())); for (org.eclipse.aether.graph.Dependency dependency : resolutionResult.getUnresolvedDependencies()) { List<Exception> exceptions = resolutionResult.getResolutionErrors(dependency); if (exceptions != null && exceptions.size() > 0) { SourceLocation sourceLocation = SourceLocationHelper.findLocation(mavenProject, dependency); allProblems.addAll(toMavenProblemInfos(pomResource, sourceLocation, exceptions)); } } } if (mavenProject != null) { addMissingArtifactProblemInfos(mavenProject, defaultSourceLocation, allProblems); } addErrorMarkers(pomResource, type, allProblems); }
private List<MavenProblemInfo> toMavenProblemInfos( IResource pomResource, SourceLocation location, List<? extends Throwable> exceptions) { List<MavenProblemInfo> result = new ArrayList<MavenProblemInfo>(); if (exceptions == null) { return result; } for (Throwable ex : exceptions) { if (ex instanceof org.eclipse.aether.transfer.ArtifactNotFoundException) { org.eclipse.aether.transfer.ArtifactNotFoundException artifactNotFoundException = (org.eclipse.aether.transfer.ArtifactNotFoundException) ex; ArtifactNotFoundProblemInfo problem = new ArtifactNotFoundProblemInfo( artifactNotFoundException.getArtifact(), mavenConfiguration.isOffline(), location); result.add(problem); } else if (ex instanceof AbstractArtifactResolutionException) { AbstractArtifactResolutionException abstractArtifactResolutionException = (AbstractArtifactResolutionException) ex; String errorMessage = getArtifactId(abstractArtifactResolutionException) + " " + getRootErrorMessage(ex); // $NON-NLS-1$ result.add(new MavenProblemInfo(errorMessage, location)); } else if (ex instanceof ProjectBuildingException) { Throwable cause = ex.getCause(); if (cause instanceof ModelBuildingException) { ModelBuildingException mbe = (ModelBuildingException) cause; for (ModelProblem problem : mbe.getProblems()) { String message = NLS.bind(Messages.pluginMarkerBuildError, problem.getMessage()); int severity = (Severity.WARNING == problem.getSeverity()) ? IMarker.SEVERITY_WARNING : IMarker.SEVERITY_ERROR; SourceLocation problemLocation = SourceLocationHelper.findLocation(pomResource, problem); result.add(new MavenProblemInfo(message, severity, problemLocation)); } } else { result.add(new MavenProblemInfo(getErrorMessage(ex), location)); } } else { result.add(new MavenProblemInfo(getErrorMessage(ex), location)); } } return result; }