diff --git a/CONTRIBUTORS b/CONTRIBUTORS index e8ed2daf4..bcf1af2b1 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -4,6 +4,7 @@ Adam Blinkinsop Adam Bryzak Adam Sotona Aleksandr Ishutin +Alexei Yudichev Alexey Panchenko Alexey Solofnenko Alison Winters diff --git a/WHATSNEW b/WHATSNEW index 0214e82dd..55427972b 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -930,6 +930,10 @@ Other changes: * A new token filter that suppresses tokens that match their ancestor token has been added. + * s nested into s can now use a dir + attribute different from the . + Bugzilla Report 37763. + Changes from Ant 1.7.0 TO Ant 1.7.1 ============================================= diff --git a/contributors.xml b/contributors.xml index a965c5ad7..6ebe71579 100644 --- a/contributors.xml +++ b/contributors.xml @@ -46,6 +46,10 @@ Aleksandr Ishutin + + Alexei + Yudichev + Alexey Panchenko diff --git a/src/main/org/apache/tools/ant/types/optional/depend/ClassfileSet.java b/src/main/org/apache/tools/ant/types/optional/depend/ClassfileSet.java index 475649343..727ae6c24 100644 --- a/src/main/org/apache/tools/ant/types/optional/depend/ClassfileSet.java +++ b/src/main/org/apache/tools/ant/types/optional/depend/ClassfileSet.java @@ -121,6 +121,8 @@ public class ClassfileSet extends FileSet { return getRef(p).getDirectoryScanner(p); } dieOnCircularReference(p); + DirectoryScanner parentScanner = super.getDirectoryScanner(p); + DependScanner scanner = new DependScanner(parentScanner); Vector allRootClasses = (Vector) rootClasses.clone(); for (Enumeration e = rootFileSets.elements(); e.hasMoreElements();) { FileSet additionalRootSet = (FileSet) e.nextElement(); @@ -135,9 +137,8 @@ public class ClassfileSet extends FileSet { allRootClasses.addElement(className); } } + scanner.addBasedir(additionalRootSet.getDir(p)); } - DirectoryScanner parentScanner = super.getDirectoryScanner(p); - DependScanner scanner = new DependScanner(parentScanner); scanner.setBasedir(getDir(p)); scanner.setRootClasses(allRootClasses); scanner.scan(); diff --git a/src/main/org/apache/tools/ant/types/optional/depend/DependScanner.java b/src/main/org/apache/tools/ant/types/optional/depend/DependScanner.java index 47a81f755..d3b58f88b 100644 --- a/src/main/org/apache/tools/ant/types/optional/depend/DependScanner.java +++ b/src/main/org/apache/tools/ant/types/optional/depend/DependScanner.java @@ -47,6 +47,8 @@ public class DependScanner extends DirectoryScanner { */ private Vector included; + private Vector additionalBaseDirs = new Vector(); + /** * The parent scanner which gives the basic set of files. Only files which * are in this set and which can be reached from a root class will end @@ -109,9 +111,13 @@ public class DependScanner extends DirectoryScanner { analyzer = (DependencyAnalyzer) analyzerClass.newInstance(); } catch (Exception e) { throw new BuildException("Unable to load dependency analyzer: " - + analyzerClassName, e); + + analyzerClassName, e); } analyzer.addClassPath(new Path(null, basedir.getPath())); + for (Enumeration e = additionalBaseDirs.elements(); e.hasMoreElements();) { + File additionalBaseDir = (File) e.nextElement(); + analyzer.addClassPath(new Path(null, additionalBaseDir.getPath())); + } for (Enumeration e = rootClasses.elements(); e.hasMoreElements();) { String rootClass = (String) e.nextElement(); @@ -210,4 +216,8 @@ public class DependScanner extends DirectoryScanner { /** {@inheritDoc}. */ public void setCaseSensitive(boolean isCaseSensitive) { } + + public void addBasedir(File baseDir) { + additionalBaseDirs.addElement(baseDir); + } }