Thanks Peter for reply. I think ANT developer should think on extending there "javac" task to provide such feature.
Thanks, -----Original Message----- From: Peter Reilly [mailto:[EMAIL PROTECTED] Sent: Wednesday, June 27, 2007 3:46 PM To: Ant Users List Subject: Re: Javac task query On 6/27/07, Yadav, Akshat Kumar <[EMAIL PROTECTED]> wrote: > > Thanks Prashant for reply. > > I am talking for the situation where a.java, b.java and c.java are > independent java code files. > > Thanks, > <javac/> does not remove the c.class file if the c.java file does not exist. - i.e. it has no memory of previous compiles. and there may be another <javac> task in the build file that could build c.class. There are a number of times when similar things happen, if a.java changes a method signature and b.java uses a.java's method, b.java needs to be recompiled, but <javac/> does not know this. The common way to deal with problems like this is to have a build directory for *all* the build artifacts (.class files, generated java files, .jar files, javadoc, code coverage files, junit reports, etc) and have a "clean" target that simply deletes the build directory: <target name="clean"> <delete dir="build"/> </target> Peter > -----Original Message----- > From: Prashant Reddy [mailto:[EMAIL PROTECTED] > Sent: Wednesday, June 27, 2007 1:57 PM > To: Ant Users List > Subject: Re: Javac task query > > No 'javac' task by itself will not delete class file whose source java > file has been deleted, and rightly so. > > I do not think you would really want other source files to *not* > compile when you have deleted a dependent source file. > > Imagine class A uses class C and you deleted class C (manually, and > not using a modern IDE). Even though the time stamp for class A did > not change, you would want to recompile both A, and C. > > You could have a cleancompile target in your build.xml > > <target name="cleancompile" depends="remove.classes.dir, compile, > jar"/> > > The "remove.classes.dir" target would remove all the class files from > the ${dest} directory. > > In the sited Phase 2, you would run the cleancompile target, instead > of simple 'jar' target. This would remove C.class along with other > class files from ${dest} directory. During the next compilation since > C.java is deleted C.class will not be generated, and you jar will not > have c.class. > > Hope this helps. > > -Prashant > On Wed, 2007-06-27 at 10:10 +0800, Yadav, Akshat Kumar wrote: > > Thanks Steve! It worked. > > > > But lets say if I have executed compile target on a.java, b.java > > ,c.java it generates a.class, b.class, c.class and then I made jar > > of these class files. Later if I deleted c.java from source and its > > class > > > file is present is in dest dir. And when I will make jar it will > > contain c.class also, that I don't want to be persent in jar file as > > its corresponding java file is deleted from source dir. > > > > Reference: > > Phase 1: > > Source: a.java, b.java, c.java > > Dest: a.class, b.class, c.class > > Jar: JTQ.jar (contains a.class, b.class, c.class) > > > > Phase 2 (when I deleted c.java from source dir) > > Source: a.java, b.java > > Dest: a.class, b.class, c.class > > Jar: JTQ.jar (contains a.class, b.class, c.class) > > > > But I don't want c.class should not be presend in jar. It there any > > option or method to counter with such situation. > > > > Any help appreciated. If my query is not clear, then let me know... > > > > Thanks, > > > > -----Original Message----- > > From: Steve Loughran [mailto:[EMAIL PROTECTED] > > Sent: Tuesday, June 26, 2007 7:04 PM > > To: Ant Users List > > Subject: Re: Javac task query > > > > Yadav, Akshat Kumar wrote: > > > > > > Hi Prashant, > > > > > > I had executed ANT in verbose and debug mode and it shows > > > > > > [javac] HelloWorlApp.java added as HelloWorlApp.class doesn't > exist. > > > > > > Whereas the class file exist in dest dir. I tried adding/deleting > > > dest > > > > > dir in classpath, but no luck in both the situation. > > > > > > I would appreciate, If you could try this in your environment. I > > > had > > > > tried this with ANT 1.6.5/1.7 and java 1.4/1.5. > > > > > > P.S: Other member's can also suggest me something. > > > > > > Thanks, > > > > could be the classname in the .java file has a different spelling or > > case from the source file itself > > > > -------------------------------------------------------------------- > > - To unsubscribe, e-mail: [EMAIL PROTECTED] For > > additional > > > commands, e-mail: [EMAIL PROTECTED] > > > > > > -------------------------------------------------------------------- > > - To unsubscribe, e-mail: [EMAIL PROTECTED] For > > additional > > > commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] For additional > commands, e-mail: [EMAIL PROTECTED] > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] For additional > commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]