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/07/03 14:19:53 UTC

[sling-slingfeature-maven-plugin] branch master updated: SLING-9566 : Allow to specify classifier for source artifact

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


The following commit(s) were added to refs/heads/master by this push:
     new 79e3cea  SLING-9566 : Allow to specify classifier for source artifact
79e3cea is described below

commit 79e3cea0347924fe56a97d9ffb0bf8b09169b02e
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Fri Jul 3 16:19:38 2020 +0200

    SLING-9566 : Allow to specify classifier for source artifact
---
 .../sling/feature/maven/mojos/ApisJarMojo.java     | 19 ++++++++--------
 .../sling/feature/maven/mojos/apis/ApisUtil.java   | 25 ++++++++++++++++++++++
 2 files changed, 35 insertions(+), 9 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 8455d75..788cfe4 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
@@ -1281,15 +1281,12 @@ public class ApisJarMojo extends AbstractIncludingFeatureMojo {
     }
 
     private void downloadSources(final ApisJarContext ctx, final ArtifactInfo info, final Artifact artifact) throws MojoExecutionException {
-        ArtifactId artifactId = artifact.getId();
-        getLog().debug("Downloading sources for " + artifactId.toMvnId() + "...");
+        getLog().debug("Downloading sources for " + artifact.getId().toMvnId() + "...");
 
-        List<ArtifactId> scmIds = ApisUtil.getSourceIds(artifact);
-        String scmLocation = artifact.getMetadata().get(ApisUtil.SCM_LOCATION);
-        if ( scmIds != null && scmLocation != null) {
-            throw new MojoExecutionException("Both " + ApisUtil.SCM_IDS + " and " + ApisUtil.SCM_LOCATION + " are defined for " + artifactId);
-        }
+        ApisUtil.validateSourceInfo(artifact);
 
+        final List<ArtifactId> scmIds = ApisUtil.getSourceIds(artifact);
+        final String scmLocation = artifact.getMetadata().get(ApisUtil.SCM_LOCATION);
         if ( scmIds != null ) {
             for(final ArtifactId sourcesArtifactId : scmIds) {
                 downloadSourceAndDeflate(ctx, info, sourcesArtifactId, false);
@@ -1299,8 +1296,12 @@ public class ApisJarMojo extends AbstractIncludingFeatureMojo {
             final String connection = checkoutSourcesFromSCM(ctx, info, artifact);
             info.addSourceInfo(connection);
         } else {
-            final ArtifactId sourcesArtifactId = artifactId.changeClassifier("sources").changeType("jar");
-            if ( downloadSourceAndDeflate(ctx, info, sourcesArtifactId, true) ) {
+            String sourceClassifier = artifact.getMetadata().get(ApisUtil.SCM_CLASSIFIER);
+            if ( sourceClassifier == null ) {
+                sourceClassifier = "sources"; // default
+            }
+            final ArtifactId sourcesArtifactId = artifact.getId().changeClassifier(sourceClassifier).changeType("jar");
+            if ( downloadSourceAndDeflate(ctx, info, sourcesArtifactId, artifact.getMetadata().get(ApisUtil.SCM_CLASSIFIER) == null) ) {
                 final String connection =  checkoutSourcesFromSCM(ctx, info, artifact);
                 info.addSourceInfo(connection);
             } else {
diff --git a/src/main/java/org/apache/sling/feature/maven/mojos/apis/ApisUtil.java b/src/main/java/org/apache/sling/feature/maven/mojos/apis/ApisUtil.java
index 24f5b6d..10f5ae4 100644
--- a/src/main/java/org/apache/sling/feature/maven/mojos/apis/ApisUtil.java
+++ b/src/main/java/org/apache/sling/feature/maven/mojos/apis/ApisUtil.java
@@ -51,6 +51,10 @@ public class ApisUtil {
     /** Alternative IDS to a source artifact. */
     public static final String SCM_IDS = "source-ids";
 
+    /** Alternative classifier for the source artifact. */
+    public static final String SCM_CLASSIFIER = "source-classifier";
+
+
     /** Links for javadocs. */
     public static final String JAVADOC_LINKS = "javadoc-links";
 
@@ -142,4 +146,25 @@ public class ApisUtil {
         return result;
     }
 
+    /**
+     * Validate that only one source metadata is set
+     * @param artifact The artifact to check
+     * @throws MojoExecutionException If metadata information is invalid
+     */
+    public static void validateSourceInfo(final Artifact artifact) throws MojoExecutionException {
+        int count = 0;
+        if ( artifact.getMetadata().get(ApisUtil.SCM_LOCATION) != null ) {
+            count++;
+        }
+        if ( artifact.getMetadata().get(ApisUtil.SCM_CLASSIFIER) != null ) {
+            count++;
+        }
+        if ( artifact.getMetadata().get(ApisUtil.SCM_IDS) != null ) {
+            count++;
+        }
+        if ( count > 1 ) {
+            throw new MojoExecutionException("Only one source configuration out of " + ApisUtil.SCM_CLASSIFIER + ", " + ApisUtil.SCM_IDS + " or " + ApisUtil.SCM_LOCATION + " is allowed for " + artifact.getId().toMvnId());
+        }
+    }
+
 }