protected void packageSources()

in src/main/java/org/apache/maven/plugins/source/AbstractSourceJarMojo.java [265:321]


    protected void packageSources(List<MavenProject> theProjects) throws MojoExecutionException {
        if (project.getArtifact().getClassifier() != null) {
            getLog().warn("NOT adding sources to artifacts with classifier as Maven only supports one classifier "
                    + "per artifact. Current artifact [" + project.getArtifact().getId() + "] has a ["
                    + project.getArtifact().getClassifier() + "] classifier.");

            return;
        }

        MavenArchiver archiver = createArchiver();

        for (MavenProject pItem : theProjects) {
            MavenProject subProject = getProject(pItem);

            if ("pom".equals(subProject.getPackaging())) {
                continue;
            }

            archiveProjectContent(subProject, archiver.getArchiver());
        }

        if (archiver.getArchiver().getResources().hasNext() || forceCreation) {

            if (useDefaultManifestFile && defaultManifestFile.exists() && archive.getManifestFile() == null) {
                getLog().info("Adding existing MANIFEST to archive. Found under: " + defaultManifestFile.getPath());
                archive.setManifestFile(defaultManifestFile);
            }

            File outputFile = new File(outputDirectory, finalName + "-" + getClassifier() + getExtension());

            try {
                archiver.setOutputFile(outputFile);
                archive.setForced(forceCreation);

                getLog().debug("create archive " + outputFile);
                archiver.createArchive(session, project, archive);
            } catch (IOException | ArchiverException | DependencyResolutionRequiredException | ManifestException e) {
                throw new MojoExecutionException("Error creating source archive: " + e.getMessage(), e);
            }

            if (attach) {
                for (Artifact attachedArtifact : project.getAttachedArtifacts()) {
                    if (isAlreadyAttached(attachedArtifact, project, getClassifier())) {
                        getLog().error("We have duplicated artifacts attached.");
                        throw new MojoExecutionException("Presumably you have configured maven-source-plugin "
                                + "to execute twice times in your build. You have to configure a classifier "
                                + "for at least on of them.");
                    }
                }
                projectHelper.attachArtifact(project, getType(), getClassifier(), outputFile);
            } else {
                getLog().info("NOT adding java-sources to attached artifacts list.");
            }
        } else {
            getLog().info("No sources in project. Archive not created.");
        }
    }