Are you building on NT? If so, you can eliminate the file access problem by using snapshot views, where all the files are local anyhow. Then you just take a one time little hit at the beging of a build to update whatever files changed since the last update...
If it's dynamic views (be it NT or Unix) then yes, file system access is slower. Let me ask this - what are the time savings? 5%? 25%? 100%? more? I feel rather nervous about changing the behavior of a basic task like javac just to accomdate a particular 3rd party software. I use clearcase my self, and compile over 2900 source files in 8 minutes on a dynamic view on a Solaris 8 box, and in about 5 minutes on an NT box in a snapshot view. I never figured the 3 minutes difference was worth the kind of change you suggest. Especially when I compare this to the 90 minutes it used to take with 'make'.... Jay Glanville wrote: > > I have found the need to change the behaviour of the javac task in > conjunction with the way that files are included/excluded before the > compiler is called. > > Currently, what happens is that the Javac task creates a set of "candidate" > files. This is a list of files that match the include and exclude patterns > stated by the task's attributes/parameters. Next the Javac task goes > through that set of candidates, eliminating source files where the > associated class file is considered up to date with the source file. Thus, > the task only sends the files to the compile that it thinks are out of date. > > My desire is to have a little bit of control over that second stage - the > elimination stage. > > Why? On a ClearCase file system, file access is slightly slower then local > hard drive access (due to networks, NFS mounts, repository server loads, > etc). Therefore, accessing two different files in different directories for > time stamps can take a while. > > What do I propose? I want to be able to tell the javac task to ignore the > elimination phase. I want the task to simply send all files to the > compiler. > > How do I propose to do this? I have added an attribute to the MatchingTask > task called "includelevel". This is to indicate the level to which I want > to include files. MatchingTask is only the holder for the attribute -- it > actually does nothing with it. It is up to subclasses to react to the value > within the attribute. Therefore, I have also made changes to the javac task > such that if the includelevel attribute equals "all" then all files will be > included in the javac task. If the includelevel equals "outofdate" (or > anything other then "all" for that matter), then the default behaviour will > be used. > > Why have I put the attribute in the MatchingTask class? I'm sure that there > are sub tasks that could more granularity of control over the include > results. > > Does this work? I have found it to be quicker on slow file systems where > the code base is over 1700 files. > > Well? What does the ant community think? > > <<index.html.txt>> <<Javac.java.txt>> <<MatchingTask.java.txt>> > > -- > Jay Dickon Glanville > P068 - SiteManager Development, Nortel Networks > 613-765-1144 (ESN 395-1144) > MS: 045/55/A05 > E-Mail: [EMAIL PROTECTED] > > > ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > Name: index.html.txt > index.html.txt Type: Plain Text (text/plain) > Encoding: quoted-printable > > Name: Javac.java.txt > Javac.java.txt Type: Plain Text (text/plain) > Encoding: quoted-printable > > Name: MatchingTask.java.txt > MatchingTask.java.txt Type: Plain Text (text/plain) > Encoding: quoted-printable > > > ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED]
