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());