in maven-plugin-tools-annotations/src/main/java/org/apache/maven/tools/plugin/extractor/annotations/JavaAnnotationsMojoDescriptorExtractor.java [575:628]
protected void extendJavaProjectBuilderWithSourcesJar(
JavaProjectBuilder builder, Artifact artifact, PluginToolsRequest request, String classifier)
throws ExtractionException {
try {
org.eclipse.aether.artifact.Artifact sourcesArtifact = new DefaultArtifact(
artifact.getGroupId(),
artifact.getArtifactId(),
classifier,
artifact.getArtifactHandler().getExtension(),
artifact.getVersion());
ArtifactRequest resolveRequest =
new ArtifactRequest(sourcesArtifact, request.getProject().getRemoteProjectRepositories(), null);
try {
ArtifactResult result = repositorySystem.resolveArtifact(request.getRepoSession(), resolveRequest);
sourcesArtifact = result.getArtifact();
} catch (ArtifactResolutionException e) {
String message = "Unable to get sources artifact for " + artifact.getId()
+ ". Some javadoc tags (@since, @deprecated and comments) won't be used";
if (LOGGER.isDebugEnabled()) {
LOGGER.warn(message, e);
} else {
LOGGER.warn(message);
}
return;
}
if (sourcesArtifact.getFile() == null || !sourcesArtifact.getFile().exists()) {
// could not get artifact sources
return;
}
if (sourcesArtifact.getFile().isFile()) {
// extract sources to target/maven-plugin-plugin-sources/${groupId}/${artifact}/sources
File extractDirectory = new File(
request.getProject().getBuild().getDirectory(),
"maven-plugin-plugin-sources/" + sourcesArtifact.getGroupId() + "/"
+ sourcesArtifact.getArtifactId() + "/" + sourcesArtifact.getVersion()
+ "/" + sourcesArtifact.getClassifier());
extractDirectory.mkdirs();
UnArchiver unArchiver = archiverManager.getUnArchiver("jar");
unArchiver.setSourceFile(sourcesArtifact.getFile());
unArchiver.setDestDirectory(extractDirectory);
unArchiver.extract();
extendJavaProjectBuilder(builder, Arrays.asList(extractDirectory), request.getDependencies());
} else if (sourcesArtifact.getFile().isDirectory()) {
extendJavaProjectBuilder(builder, Arrays.asList(sourcesArtifact.getFile()), request.getDependencies());
}
} catch (ArchiverException | NoSuchArchiverException e) {
throw new ExtractionException(e.getMessage(), e);
}
}