Return-Path: Mailing-List: contact ant-user-help@jakarta.apache.org; run by ezmlm Delivered-To: mailing list ant-user@jakarta.apache.org Received: (qmail 54550 invoked from network); 6 Feb 2001 19:34:46 -0000 Received: from email.arsin.com (204.156.135.226) by h31.sny.collab.net with SMTP; 6 Feb 2001 19:34:46 -0000 Received: by email.arsin.com with Internet Mail Service (5.5.2650.21) id ; Tue, 6 Feb 2001 11:34:49 -0800 Message-ID: <57DC0292D622D411A62600D0B746D3EC44E180@email.arsin.com> From: Peter Vogel To: "'ant-user@jakarta.apache.org'" Subject: RE: Can someone tell me what is so great about Ant? Date: Tue, 6 Feb 2001 11:34:49 -0800 MIME-Version: 1.0 X-Mailer: Internet Mail Service (5.5.2650.21) Content-Type: text/plain; charset="iso-8859-1" X-Spam-Rating: h31.sny.collab.net 1.6.2 0/1000/N Check out "cons" www.dsmit.com/cons/ It does dependency scanning and maintains an MD5 signature for determining whether a rebuild of a file is necessary, the signature incorporates ALL the inputs (including the compiler and the compiler command line) that lead to a derived object so it is quite good at rebuilding what it should and not rebuilding what it should not. -Peter > -----Original Message----- > From: King Dale [mailto:KingD@tce.com] > Sent: Tuesday, February 06, 2001 10:25 AM > To: 'ant-user@jakarta.apache.org' > Subject: Can someone tell me what is so great about Ant? > > > I don't mean to be a troll, but I have been trying to find a > good Java build > tool. I have seen lots of hype about Ant and have looked at > it and I'd just > like to say I am not that impressed. I am hoping someone can > show me where I > am wrong. Maybe there are some better ways to do things as > all I have seen > are simple build script examples. > > It is supposedly a powerful tool that replaces make, but I > find lots of > problem with it as a build tool. Here is a simple example. > Let's use the > build.xml directly from the documentation: > > > > > > > > > > > > > > > > > > > > > > > > > > basedir="${build}" /> > > > > > > > > > > And let's create Main.java and Foo.java defined as follows: > public class Main > { > public static void main( String[] args ) > { > Foo.test(); > } > } > > public class Foo > { > public static void test() > { > System.out.println( "Foo.test()" ); > } > } > > I run Ant and it builds correctly. But let's say I need to change the > signature of Foo.test and I add a parameter, but I forget to > make the change > in Main. If I run Ant again it will tell me that it built > successfully, but > I have successfully built an inconsistent target. The code > will not run > since Main was not recompiled. > > Certainly I could write my own tasks and explicit rules to > fix this, but all > I want to do is build, not write my own make tool. Or I could > simply always > rebuild all files by deleting the generated classes, but then > all Ant is is > a glorifed batch file. Perhaps others have some other ideas on this. > > Something else I look for, but is extremely rare in make tools is the > ability to handle that file dates can go backwards. For > instance when using > an SCM tool and I am working on version 2.x and there is a > problem found in > version 1.9. I will check out the source files for 1.9 but > they will have > dates older than the current files and even though the files > are different > they will not be built because the generated files are newer. > One way for a > build tool to handle this is to maintain a build log that is > consulted for > the next build. That build log says that file X with a > certain timestamp was > generated from this list of files with timestamps. If any of > the time stamps > are not equal to what is in the log, X is regernerated. The > only build tool > I know of that does this sort of thing is omake in ClearCase. > > Hopefully these will be taken as ideas for further improvement. > > --- > -- Dale King >