You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by da...@apache.org on 2018/07/02 11:58:59 UTC

[sling-slingfeature-maven-plugin] branch master updated: Attach all features with classifiers to the project artifacts

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

davidb 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 60c1b19  Attach all features with classifiers to the project artifacts
60c1b19 is described below

commit 60c1b192ad55ce1d44dc20af59c65d7671605473
Author: David Bosschaert <bo...@adobe.com>
AuthorDate: Mon Jul 2 12:55:01 2018 +0100

    Attach all features with classifiers to the project artifacts
---
 pom.xml                                              | 20 ++++++++++++++++----
 .../sling/feature/maven/mojos/AttachFeature.java     | 18 ++++++++++++++++++
 2 files changed, 34 insertions(+), 4 deletions(-)

diff --git a/pom.xml b/pom.xml
index 0d099b6..8a97156 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,8 +21,8 @@
         <relativePath />
     </parent>
 
-    <artifactId>osgifeature-maven-plugin</artifactId>
-    <version>0.01.7-SNAPSHOT</version>
+    <artifactId>slingfeature-maven-plugin</artifactId>
+    <version>0.2.0-SNAPSHOT</version>
     <packaging>maven-plugin</packaging>
 
     <name>Apache Sling OSGi Feature Maven Plugin</name>
@@ -36,11 +36,13 @@
         <maven.site.path>${project.artifactId}-archives/${project.artifactId}-LATEST</maven.site.path>
     </properties>
 
+    <!-- 
     <scm>
         <connection>scm:svn:http://svn.apache.org/repos/asf/sling/trunk/tooling/maven/osgifeature-maven-plugin</connection>
         <developerConnection>scm:svn:https://svn.apache.org/repos/asf/sling/trunk/tooling/maven/osgifeature-maven-plugin</developerConnection>
         <url>http://svn.apache.org/viewvc/sling/trunk/tooling/maven/osgifeature-maven-plugin</url>
     </scm>
+    -->
 
     <!-- Support for publishing the mvn site. -->
     <distributionManagement>
@@ -109,14 +111,24 @@
 
     <dependencies>
         <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.converter</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.sling</groupId>
+            <artifactId>org.apache.sling.commons.johnzon</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+        <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.feature</artifactId>
-            <version>0.0.1-SNAPSHOT</version>
+            <version>0.1.2</version>
         </dependency>
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.feature.io</artifactId>
-            <version>0.0.1-SNAPSHOT</version>
+            <version>0.1.2</version>
         </dependency>
         <dependency>
             <groupId>org.apache.maven</groupId>
diff --git a/src/main/java/org/apache/sling/feature/maven/mojos/AttachFeature.java b/src/main/java/org/apache/sling/feature/maven/mojos/AttachFeature.java
index 2cf38ff..e0942db 100644
--- a/src/main/java/org/apache/sling/feature/maven/mojos/AttachFeature.java
+++ b/src/main/java/org/apache/sling/feature/maven/mojos/AttachFeature.java
@@ -22,11 +22,14 @@ import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.ResolutionScope;
 import org.apache.sling.feature.Feature;
+import org.apache.sling.feature.io.json.FeatureJSONReader;
+import org.apache.sling.feature.io.json.FeatureJSONReader.SubstituteVariables;
 import org.apache.sling.feature.io.json.FeatureJSONWriter;
 import org.apache.sling.feature.maven.FeatureConstants;
 import org.apache.sling.feature.maven.ProjectHelper;
 
 import java.io.File;
+import java.io.FileReader;
 import java.io.FileWriter;
 import java.io.IOException;
 import java.io.Writer;
@@ -73,5 +76,20 @@ public class AttachFeature extends AbstractFeatureMojo {
     public void execute() throws MojoExecutionException, MojoFailureException {
         attach(ProjectHelper.getFeature(this.project), FeatureConstants.FEATURE_ARTIFACT_NAME, FeatureConstants.CLASSIFIER_FEATURE);
         attach(ProjectHelper.getTestFeature(this.project), FeatureConstants.TEST_FEATURE_ARTIFACT_NAME, FeatureConstants.CLASSIFIER_TEST_FEATURE);
+
+        // Find all features that have a classifier and attach each of them
+        String processedFeatures = project.getBuild().getDirectory() + "/features/processed";
+        for (File f : new File(processedFeatures).listFiles((d,f) -> f.endsWith(".json"))) {
+            try {
+                Feature feat = FeatureJSONReader.read(new FileReader(f), null, SubstituteVariables.NONE);
+                String classifier = feat.getId().getClassifier();
+                if (classifier == null || classifier.length() == 0)
+                    continue;
+                projectHelper.attachArtifact(project, FeatureConstants.PACKAGING_FEATURE, classifier, f);
+            } catch (IOException e) {
+                throw new MojoExecutionException("Unable to attach embedded features", e);
+            }
+        }
+
     }
 }