private void handleExtensions()

in src/main/java/org/apache/maven/archiver/MavenArchiver.java [403:441]


    private void handleExtensions(MavenProject project, Map<String, String> entries, Manifest m)
            throws ManifestException {
        // TODO: this is only for applets - should we distinguish them as a packaging?
        StringBuilder extensionsList = new StringBuilder();
        Set<Artifact> artifacts = project.getArtifacts();

        for (Artifact artifact : artifacts) {
            if (!Artifact.SCOPE_TEST.equals(artifact.getScope())) {
                if ("jar".equals(artifact.getType())) {
                    if (extensionsList.length() > 0) {
                        extensionsList.append(" ");
                    }
                    extensionsList.append(artifact.getArtifactId());
                }
            }
        }

        if (extensionsList.length() > 0) {
            addManifestAttribute(m, entries, "Extension-List", extensionsList.toString());
        }

        for (Artifact artifact : artifacts) {
            // TODO: the correct solution here would be to have an extension type, and to read
            // the real extension values either from the artifact's manifest or some part of the POM
            if ("jar".equals(artifact.getType())) {
                String artifactId = artifact.getArtifactId().replace('.', '_');
                String ename = artifactId + "-Extension-Name";
                addManifestAttribute(m, entries, ename, artifact.getArtifactId());
                String iname = artifactId + "-Implementation-Version";
                addManifestAttribute(m, entries, iname, artifact.getVersion());

                if (artifact.getRepository() != null) {
                    iname = artifactId + "-Implementation-URL";
                    String url = artifact.getRepository().getUrl() + "/" + artifact;
                    addManifestAttribute(m, entries, iname, url);
                }
            }
        }
    }