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