/** * Resolve source artifacts and download them if <code>downloadSources</code> is <code>true</code> * . Source and javadocs artifacts will be attached to the <code>IdeDependency</code> * * @param deps resolved dependencies */ private void resolveSourceArtifacts(IdeDependency[] deps) { ArtifactRepository localRepository = getLocalRepository(); ArtifactResolver artifactResolver = getArtifactResolver(); ArtifactFactory artifactFactory = getArtifactFactory(); // if downloadSources is off, just check local repository for reporting missing jars List remoteRepos = getDownloadSources() ? getRemoteArtifactRepositories() : Collections.EMPTY_LIST; for (int j = 0; j < deps.length; j++) { IdeDependency dependency = deps[j]; if (dependency.isReferencedProject() || dependency.isSystemScoped()) { // source artifact not needed continue; } // source artifact: use the "sources" classifier added by the source plugin Artifact sourceArtifact = IdeUtils.resolveArtifactWithClassifier( dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion(), "sources", localRepository, artifactResolver, //$NON-NLS-1$ artifactFactory, remoteRepos, getLog()); if (sourceArtifact.isResolved()) { dependency.setSourceAttachment(sourceArtifact.getFile()); } else { // try using a plain javadoc jar if the source jar is not available Artifact javadocArtifact = IdeUtils.resolveArtifactWithClassifier( dependency.getGroupId(), dependency.getArtifactId(), dependency.getVersion(), "javadoc", localRepository, artifactResolver, //$NON-NLS-1$ artifactFactory, remoteRepos, getLog()); if (javadocArtifact.isResolved()) { dependency.setJavadocAttachment(javadocArtifact.getFile()); } // @todo also report deps without a source attachment but with a javadoc one? missingSourceDependencies.add(dependency); } } }