FELIX-509: Exclude files before they are added to QDox. Pattern syntax is now supported.
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@635027 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java b/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java
index 9642f1b..b7cae5c 100644
--- a/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java
+++ b/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java
@@ -80,7 +80,6 @@
/**
* The comma separated list of tokens to exclude when processing sources.
- * All entries should be relative to the project directory
*
* @parameter alias="excludes"
*/
diff --git a/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/JavaClassDescriptorManager.java b/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/JavaClassDescriptorManager.java
index 8dee35f..845d862 100644
--- a/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/JavaClassDescriptorManager.java
+++ b/scrplugin/src/main/java/org/apache/felix/scrplugin/tags/JavaClassDescriptorManager.java
@@ -36,7 +36,7 @@
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugin.logging.Log;
import org.apache.maven.project.MavenProject;
-import org.codehaus.plexus.util.IOUtil;
+import org.codehaus.plexus.util.*;
import com.thoughtworks.qdox.JavaDocBuilder;
import com.thoughtworks.qdox.model.JavaSource;
@@ -76,7 +76,7 @@
*/
public JavaClassDescriptorManager(final Log log,
final MavenProject project,
- final String excludes)
+ final String excludeString)
throws MojoFailureException, MojoExecutionException {
this.log = log;
this.project = project;
@@ -87,36 +87,49 @@
JavaDocBuilder builder = new JavaDocBuilder();
builder.getClassLibrary().addClassLoader(this.classloader);
final Iterator i = project.getCompileSourceRoots().iterator();
- while ( i.hasNext() ) {
- final String tree = (String)i.next();
- this.log.debug("Adding source tree " + tree);
- builder.addSourceTree(new File(tree));
- }
// FELIX-509: check for excludes
- if ( excludes != null ) {
- final List sourcesList = new ArrayList(Arrays.asList(builder.getSources()));
- final File projectDir = project.getBasedir();
- final StringTokenizer st = new StringTokenizer(excludes, ",");
- while ( st.hasMoreTokens() ) {
- final String excludeEntry = st.nextToken();
- this.log.debug("Processing configured exclude " + excludeEntry);
- String exclude = projectDir.getAbsolutePath() + File.separatorChar + excludeEntry;
- if ( File.separatorChar != '/' ) {
- exclude = exclude.replace('/', File.separatorChar);
+ if ( excludeString != null ) {
+ final String[] excludes = StringUtils.split(excludeString, ",");
+ final String[] includes = new String[] {"**/*.java"};
+
+ while ( i.hasNext() ) {
+ final String tree = (String)i.next();
+ this.log.debug("Scanning source tree " + tree);
+ final File directory = new File(tree);
+ final DirectoryScanner scanner = new DirectoryScanner();
+ scanner.setBasedir( directory );
+
+ if ( excludes != null && excludes.length > 0 ) {
+ scanner.setExcludes( excludes );
}
- final Iterator iter = sourcesList.iterator();
- while ( iter.hasNext() ) {
- JavaSource current = (JavaSource)iter.next();
- if ( current.getFile().getAbsolutePath().startsWith(exclude)) {
- this.log.debug("Excluding source " + current.getFile());
- iter.remove();
+ scanner.addDefaultExcludes();
+ scanner.setIncludes( includes );
+
+ scanner.scan();
+
+ final String[] files = scanner.getIncludedFiles();
+ if ( files != null ) {
+ for(int m=0; m<files.length; m++) {
+ this.log.debug("Adding source file " + files[m]);
+ try {
+ builder.addSource(new File(directory, files[m]));
+ } catch (FileNotFoundException e) {
+ throw new MojoExecutionException("Unable to scan directory.", e);
+ } catch (IOException e) {
+ throw new MojoExecutionException("Unable to scan directory.", e);
+ }
}
}
}
- this.sources = (JavaSource[]) sourcesList.toArray(new JavaSource[sourcesList.size()]);
} else {
- this.sources = builder.getSources();
+ while ( i.hasNext() ) {
+ final String tree = (String)i.next();
+ this.log.debug("Adding source tree " + tree);
+ final File directory = new File(tree);
+ builder.addSourceTree(directory);
+ }
}
+ this.sources = builder.getSources();
// and now scan artifacts
final List components = new ArrayList();