ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bugzi...@apache.org
Subject DO NOT REPLY [Bug 21941] New: - Filesets with directories excluded still scan the directories
Date Mon, 28 Jul 2003 18:48:17 GMT
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=21941>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=21941

Filesets with directories excluded still scan the directories

           Summary: Filesets with directories excluded still scan the
                    directories
           Product: Ant
           Version: 1.5.3
          Platform: PC
        OS/Version: Windows NT/2K
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Core tasks
        AssignedTo: dev@ant.apache.org
        ReportedBy: david@carr.name


Overview Description:
This came up as a problem for me when I was developing a test suite, and wanted 
to have the test data in a sub-package of my source files for the tests.  There 
were a LOT of test files, and it tripled the build time for the project, having 
them located there.  I tried adding an exclude for the test data directory, but 
it did not prevent the scanning of the directory.

Steps to reproduce:
1) Create a directory (the basedir) with a "src" sub-directory.
2) Place the build file below in the basedir you created.
3) Place the java file below in the "src" directory.
4) Run ant from the basedir with the "build" target.
5) Run ant again from the basedir, comparing the speeds of the "test_slow" 
and "test_fast" targets.  If the time difference isn't large enough, just 
increase the number of files in the "testdir" directory.

File: TestProg.java
import java.io.File;

public class TestProg {
	private static final File testDir = new File("src/testdir");
	
	public static void main(String[] args) throws Exception {
		testDir.mkdirs();
		for(int i=0; i<20000; i++) {
			File testFile = new File(testDir, "test" + 
Integer.toString(i) + ".txt");
			testFile.createNewFile();
		}
	}
}

File: build.xml
<?xml version="1.0"?>
<project name="exclude_bug" basedir="." default="build">
  <description>
    Demonstrates a bug with fileset "exclude" support which can cause
    (among other things) javac tasks to take WAY too long when there
    are a lot of files excluded.
  </description>

  <target name="build" description="Generates a bunch of files in src/testdir">
    <mkdir dir="${basedir}/dest"/>
    <javac srcdir="${basedir}/src" destdir="${basedir}/dest"/>
    <java classname="TestProg" classpath="${basedir}/dest"/>
  </target>

  <target name="test_slow" description="Demonstrates that the excluded 
directory is still scanned.">
    <javac srcdir="${basedir}/src" destdir="${basedir}/dest">
      <exclude name="{$basedir}/src/testdir"/>
    </javac>
  </target>
  
  <target name="test_fast" description="Shows how quickly the build can be if 
excluded directories are not scanned.">
    <javac srcdir="${basedir}/src" destdir="${basedir}/dest">
      <include name="*.java"/>
    </javac>
  </target>
</project>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org


Mime
View raw message