You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2020/04/03 14:39:01 UTC

[sling-slingfeature-maven-plugin] 01/02: SLING-9326 : Allow customization of API jar headers

This is an automated email from the ASF dual-hosted git repository.

cziegeler pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-slingfeature-maven-plugin.git

commit 9435f6657bfec8d8302d6ad83daeeb4bd8a83bd3
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Fri Apr 3 16:18:54 2020 +0200

    SLING-9326 : Allow customization of API jar headers
---
 .../apache/sling/feature/maven/mojos/ApisJarMojo.java | 19 +++++++++++++++++--
 1 file changed, 17 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/apache/sling/feature/maven/mojos/ApisJarMojo.java b/src/main/java/org/apache/sling/feature/maven/mojos/ApisJarMojo.java
index 59a82c9..963e283 100644
--- a/src/main/java/org/apache/sling/feature/maven/mojos/ApisJarMojo.java
+++ b/src/main/java/org/apache/sling/feature/maven/mojos/ApisJarMojo.java
@@ -227,6 +227,12 @@ public class ApisJarMojo extends AbstractIncludingFeatureMojo {
     @Parameter(defaultValue = "true")
     private boolean generateJavadocJar;
 
+    /**
+     * Optional version to be put into the manifest of the created jars
+     */
+    @Parameter
+    private String apiVersion;
+
     @Parameter(defaultValue = "${project.build.directory}/apis-jars", readonly = true)
     private File mainOutputDir;
 
@@ -1263,6 +1269,8 @@ public class ApisJarMojo extends AbstractIncludingFeatureMojo {
 
         final String artifactName = String.format("%s-%s", project.getArtifactId(), finalClassifier);
 
+        final ArtifactId apiId = apiVersion == null ? ctx.getFeatureId() : ctx.getFeatureId().changeVersion(this.apiVersion);
+
         MavenArchiveConfiguration archiveConfiguration = new MavenArchiveConfiguration();
         archiveConfiguration.setAddMavenDescriptor(false);
         if (APIS.equals(classifier)) {
@@ -1270,7 +1278,7 @@ public class ApisJarMojo extends AbstractIncludingFeatureMojo {
             String symbolicName = artifactName.replace('-', '.');
             archiveConfiguration.addManifestEntry("Export-Package", getApiExportClause(ctx, apiRegion));
             archiveConfiguration.addManifestEntry("Bundle-Description", project.getDescription());
-            archiveConfiguration.addManifestEntry("Bundle-Version", ctx.getFeatureId().getOSGiVersion().toString());
+            archiveConfiguration.addManifestEntry("Bundle-Version", apiId.getOSGiVersion().toString());
             archiveConfiguration.addManifestEntry("Bundle-ManifestVersion", "2");
             archiveConfiguration.addManifestEntry("Bundle-SymbolicName", symbolicName);
             archiveConfiguration.addManifestEntry("Bundle-Name", artifactName);
@@ -1286,8 +1294,15 @@ public class ApisJarMojo extends AbstractIncludingFeatureMojo {
             archiveConfiguration.addManifestEntry("Provide-Capability", "osgi.unresolvable");
             archiveConfiguration.addManifestEntry("Require-Capability", "osgi.unresolvable;filter:=\"(&(must.not.resolve=*)(!(must.not.resolve=*)))\",osgi.ee;filter:=\"(&(osgi.ee=JavaSE/compact2)(version=1.8))\"");
         }
-        archiveConfiguration.addManifestEntry("Specification-Version", ctx.getFeatureId().getVersion());
+        archiveConfiguration.addManifestEntry("Implementation-Version", apiId.getVersion());
+        archiveConfiguration.addManifestEntry("Specification-Version", apiId.getVersion());
+
         archiveConfiguration.addManifestEntry("Implementation-Title", artifactName);
+        archiveConfiguration.addManifestEntry("Specification-Title", artifactName);
+        if (project.getOrganization() != null) {
+            archiveConfiguration.addManifestEntry("Implementation-Vendor", project.getOrganization().getName());
+            archiveConfiguration.addManifestEntry("Specification-Vendor", project.getOrganization().getName());
+        }
 
         String targetName = String.format("%s-%s-%s.jar", project.getArtifactId(), project.getVersion(), finalClassifier);
         File target = new File(mainOutputDir, targetName);