SM-2673: Add more flexibility to customize output (closes #1)

Thanks to Michael Scharp for the patch!!!


git-svn-id: https://svn.apache.org/repos/asf/servicemix/maven-plugins/trunk@1704936 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/depends-maven-plugin/src/main/java/org/apache/servicemix/tooling/depends/GenerateDependsFileMojo.java b/depends-maven-plugin/src/main/java/org/apache/servicemix/tooling/depends/GenerateDependsFileMojo.java
index 2de7ad4..b97aa8b 100644
--- a/depends-maven-plugin/src/main/java/org/apache/servicemix/tooling/depends/GenerateDependsFileMojo.java
+++ b/depends-maven-plugin/src/main/java/org/apache/servicemix/tooling/depends/GenerateDependsFileMojo.java
@@ -20,11 +20,7 @@
 import java.io.IOException;
 import java.io.OutputStream;
 import java.io.PrintStream;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Date;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
@@ -68,6 +64,30 @@
      * @required
      */
     protected boolean recursive;
+    
+    /**
+     *
+     * @parameter expression='true'
+     */
+    protected boolean includeVersion;
+
+    /**
+     *
+     * @parameter expression='true'
+     */
+    protected boolean includeClassifier;
+
+    /**
+     *
+     * @parameter expression='true'
+     */
+    protected boolean includeScope;
+
+    /**
+     *
+     * @parameter expression='true'
+     */
+    protected boolean includeType;
 
     /**
      * The file to generate
@@ -88,6 +108,11 @@
     protected List remoteRepos;
 
     /**
+     * @parameter expression="${filterGroupIds}"
+     */
+    protected String[] filterGroupIds;
+
+    /**
      * @component
      */
     protected ArtifactMetadataSource artifactMetadataSource;
@@ -121,18 +146,24 @@
         List<Dependency> dependencies;
         if (!recursive) {
             dependencies = project.getDependencies();
+
+            if ( filterGroupIds.length != 0 ) {
+                Iterator<Dependency> dependencyIterator = dependencies.iterator();
+                while (dependencyIterator.hasNext()) {
+                    Dependency dependency = dependencyIterator.next();
+                    if ( !doFilterGroupId( dependency.getGroupId() ) ) {
+                        dependencyIterator.remove();
+                    }
+                }
+            }
+
         } else {
             Set<Artifact> artifacts = project.getArtifacts();
             dependencies = new ArrayList<Dependency>();
             for (Artifact a : artifacts) {
-                Dependency dep = new Dependency();
-                dep.setGroupId(a.getGroupId());
-                dep.setArtifactId(a.getArtifactId());
-                dep.setVersion(a.getBaseVersion());
-                dep.setClassifier(a.getClassifier());
-                dep.setType(a.getType());
-                dep.setScope(a.getScope());
-                dependencies.add(dep);
+                if( filterGroupIds.length == 0 || doFilterGroupId( a.getGroupId() ) ) {
+                    dependencies.add(generateDependency( a ));
+                }
             }
         }
         Collections.sort(dependencies, new DependencyComparator());
@@ -156,6 +187,23 @@
         }
     }
 
+    protected boolean doFilterGroupId( String groupId )
+    {
+        return Arrays.asList( filterGroupIds ).indexOf( groupId ) > -1;
+    }
+
+    protected Dependency generateDependency(Artifact a)
+    {
+        Dependency dep = new Dependency();
+                   dep.setGroupId(a.getGroupId());
+                   dep.setArtifactId(a.getArtifactId());
+                   dep.setVersion(a.getBaseVersion());
+                   dep.setClassifier(a.getClassifier());
+                   dep.setType(a.getType());
+                   dep.setScope(a.getScope());
+        return dep;
+    }
+
     protected void populateProperties(PrintStream out, List<Dependency> dependencies) {
         out.println("# Project dependencies generated by the Apache ServiceMix Maven Plugin");
         out.println("# Generated at: " + new Date());
@@ -171,13 +219,20 @@
 
         for (Dependency dependency : dependencies) {
             String prefix = dependency.getGroupId() + SEPARATOR + dependency.getArtifactId() + SEPARATOR;
-            out.println(prefix + "version = " + dependency.getVersion());
+            
+            if( includeVersion )
+                out.println(prefix + "version = " + dependency.getVersion());
+
             String classifier = dependency.getClassifier();
-            if (classifier != null) {
+            if (classifier != null && includeClassifier) {
                 out.println(prefix + "classifier = " + classifier);
             }
-            out.println(prefix + "type = " + dependency.getType());
-            out.println(prefix + "scope = " + dependency.getScope());
+
+            if( includeType )
+                out.println(prefix + "type = " + dependency.getType());
+            if( includeScope )
+                out.println(prefix + "scope = " + dependency.getScope());
+
             out.println();
 
             getLog().debug("Dependency: " + dependency + " classifier: " + classifier + " type: " + dependency.getType());