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 84602cb  SLING-8774 : Allow to include resources into 
api/javadoc/source jar
84602cb is described below

commit 84602cbb751d961bb9d94284bfdf8abad0ce8dcc
Author: Carsten Ziegeler <cziege...@apache.org>
AuthorDate: Fri Oct 11 09:36:26 2019 +0200

    SLING-8774 : Allow to include resources into api/javadoc/source jar
---
 .../sling/feature/maven/mojos/ApisJarMojo.java     | 65 +++++++++++++++++-----
 1 file changed, 52 insertions(+), 13 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 0cbcb31..c88dd50 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
@@ -136,9 +136,9 @@ public class ApisJarMojo extends 
AbstractIncludingFeatureMojo implements Artifac
     @Parameter
     private FeatureSelectionConfig selection;
 
-    @Parameter(defaultValue = "${project.build.directory}/apis-jars", readonly 
= true)
-    private File mainOutputDir;
-
+    /**
+     * Patterns identifying which resources to include from bundles
+     */
     @Parameter
     private String[] includeResources;
 
@@ -148,6 +148,27 @@ public class ApisJarMojo extends 
AbstractIncludingFeatureMojo implements Artifac
     @Parameter
     private String[] javadocLinks;
 
+    /**
+     * Additional resources for the api jar
+     */
+    @Parameter
+    private List<File> apiResources;
+
+    /**
+     * Additional resources for the api source jar
+     */
+    @Parameter
+    private List<File> apiSourceResources;
+
+    /**
+     * Additional resources for the api javadoc jar
+     */
+    @Parameter
+    private List<File> apiJavadocResources;
+
+    @Parameter(defaultValue = "${project.build.directory}/apis-jars", readonly 
= true)
+    private File mainOutputDir;
+
     @Component(hint = "default")
     private ModelBuilder modelBuilder;
 
@@ -200,10 +221,7 @@ public class ApisJarMojo extends 
AbstractIncludingFeatureMojo implements Artifac
         }
     }
 
-    private void onFeature(Feature feature) throws MojoExecutionException {
-        getLog().info(MessageUtils.buffer().a("Creating APIs JARs for Feature 
").strong(feature.getId().toMvnId())
-                .a(" ...").toString());
-
+    private List<ApiRegion> getApiRegions(final Feature feature) throws 
MojoExecutionException {
         List<ApiRegion> apiRegions = null;
 
         Extensions extensions = feature.getExtensions();
@@ -213,7 +231,7 @@ public class ApisJarMojo extends 
AbstractIncludingFeatureMojo implements Artifac
             if (jsonRepresentation == null || jsonRepresentation.isEmpty()) {
                 getLog().info("Feature file " + feature.getId().toMvnId() + " 
declares an empty '" + API_REGIONS_KEY
                     + "' extension, no API JAR will be created");
-                return;
+                return null;
             }
             // calculate all api-regions first, taking the inheritance in 
account
             apiRegions = fromJson(feature, jsonRepresentation);
@@ -223,6 +241,18 @@ public class ApisJarMojo extends 
AbstractIncludingFeatureMojo implements Artifac
             apiRegions = Collections.singletonList(global);
         }
 
+        return apiRegions;
+    }
+
+    private void onFeature(final Feature feature) throws 
MojoExecutionException {
+        getLog().info(MessageUtils.buffer().a("Creating API JARs for Feature 
").strong(feature.getId().toMvnId())
+                .a(" ...").toString());
+
+        final List<ApiRegion> apiRegions = getApiRegions(feature);
+        if (apiRegions == null) {
+            return;
+        }
+
         if (!mainOutputDir.exists()) {
             mainOutputDir.mkdirs();
         }
@@ -254,16 +284,16 @@ public class ApisJarMojo extends 
AbstractIncludingFeatureMojo implements Artifac
 
             File apisDir = new File(regionDir, APIS);
             List<String> nodeTypes = recollect(featureDir, deflatedBinDir, 
apiRegion, apisDir);
-            inflate(feature.getId(), apisDir, apiRegion, APIS, nodeTypes);
+            createArchive(feature.getId(), apisDir, apiRegion, APIS, 
nodeTypes, this.apiResources);
 
             File sourcesDir = new File(regionDir, SOURCES);
             recollect(featureDir, deflatedSourcesDir, apiRegion, sourcesDir);
-            inflate(feature.getId(), sourcesDir, apiRegion, SOURCES, null);
+            createArchive(feature.getId(), sourcesDir, apiRegion, SOURCES, 
null, this.apiSourceResources);
 
             if (sourcesDir.list().length > 0) {
                 File javadocsDir = new File(regionDir, JAVADOC);
                 generateJavadoc(apiRegion, sourcesDir, javadocsDir, 
javadocClasspath);
-                inflate(feature.getId(), javadocsDir, apiRegion, JAVADOC, 
null);
+                createArchive(feature.getId(), javadocsDir, apiRegion, 
JAVADOC, null, this.apiJavadocResources);
             } else {
                 getLog().warn("Javadoc JAR will NOT be generated - sources 
directory was empty!");
             }
@@ -781,7 +811,8 @@ public class ApisJarMojo extends 
AbstractIncludingFeatureMojo implements Artifac
         return nodeTypes;
     }
 
-    private void inflate(ArtifactId featureId, File collectedDir, ApiRegion 
apiRegion, String classifier, List<String> nodeTypes) throws 
MojoExecutionException {
+    private void createArchive(ArtifactId featureId, File collectedDir, 
ApiRegion apiRegion, String classifier,
+            List<String> nodeTypes, List<File> resources) throws 
MojoExecutionException {
         DirectoryScanner directoryScanner = new DirectoryScanner();
         directoryScanner.setBasedir(collectedDir);
         directoryScanner.setIncludes("**/*.*");
@@ -791,7 +822,15 @@ public class ApisJarMojo extends 
AbstractIncludingFeatureMojo implements Artifac
         for (String includedFile : directoryScanner.getIncludedFiles()) {
             jarArchiver.addFile(new File(collectedDir, includedFile), 
includedFile);
         }
-
+        if (resources != null) {
+            for (final File rsrc : resources) {
+                if (rsrc.isDirectory()) {
+                    jarArchiver.addDirectory(rsrc);
+                } else {
+                    jarArchiver.addFile(rsrc, rsrc.getName());
+                }
+            }
+        }
         StringBuilder classifierBuilder = new StringBuilder();
         if (featureId.getClassifier() != null) {
             classifierBuilder.append(featureId.getClassifier())

Reply via email to