protected void extendJavaProjectBuilderWithSourcesJar()

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);
        }
    }