home Why we use Ant (or: NIH)

How close is Scons (http://www.scons.org/) to the could-be build system you describe? --Jarno

It might be the one that I could find tolerable, but when I looked at it it still seemed a bit noisy. But I'm not sure yet.

Maven? http://www.onjava.com/pub/a/onjava/2003/10/22/maven.html

I didn't know about this one. Looks very interesting; yet another possibility

My thoughts on this: http://www.dehora.net/journal/archives/000296.html - BillDehora?

Excellent thoughts!

Rake the Ruby Make. http://rubyforge.org/projects/rake/ Early project, but seems very promising. Actually It provides exactly what you want, but more investigation is needed. And while you go test Ruby have a look at YAML http://www.yaml.org which I prefer over XML (http://xmlsucks.org) anyday.

Sascha Ebach

I recently saw this article about a similar situation: http://tools.devchannel.org/devtoolschannel/03/12/15/2139255.shtml but at the end of the day it seems that the programmers had their way. CMake? looks interesting but as with AntBuilder? it may have very litlle inertia to make into any corporation unless it becomes popular (e.g. used a lot) on the open source world. -- SergioFanchiotti?

AAP (http://www.a-a-p.org/) is another build system, written by the author of the vim editor.

Appealing, but it only appears to support C/C++

I have not used it myself, but it seems to be implemented and extensible in python.


2004/01/02 21:34 EST (via web):
a-a-p looks cool, but why it doesn't adopt the python syntax? I suppose rake grokked this concept better, even if I suppose this is quite immature: use a common simple procedural language (ruby, python, javascript, brainf***) and extend it with simple rules and routines for automated build

Seems you can call out to Python syntax from AAP. http://www.a-a-p.org/exec/user-python.html . I'm curious how you can label ruby, python, and JavaScript? as simple procedural languages.

It's amusing to see, in the same sentence, a disparaging reference to make's troubles with tabs/spaces and an approving reference to Python, which has exactly the same problem!
jdf@pobox.com

"simple" as in "simple to understand", not talking about language features, and "procedural" as opposed to "declarative".

Again, if you look at aap you may notice it has a set of command in his own, and a specific syntax. You just add python code in a different code, and it seem messy to me (you impression may vary)

That's really different in spirit from what I meant. Sorry for being so obscure :(

You forgot to mention Groovy. http://groovy.codehaus.org/

I know its fashionable to slam XML these days, Dave and Andy don't like it and advise the use of YAML, but I have have a curious question question? Have you ever considered using XSL/XSLT to build your ant file? I use one XML file to describe what I want done and then use an XSL/XSLT style sheet to produce the target ant file with all the warts. XSL seems to provide the XML things you desire, conditionals, looping, recursion, function calls and the like.

Recently I had to do a build of our product on VMS where java/ant isnt available (it might be, but I dont have enough hair left as it is to spend time getting it installed/running on VMS), so I built a new style sheet on my XP box that took the XML descripition that builds the ant.xml for ant and output "a rough translation" makefile. the makefile is hardly a thing of beauty and certainly wouldnt be what you would do if you are building such a makefile lovingly by hand, but it doesnt need to be. I get to focus on my attention on the .xml describing "what" needs to be done, and the ocassionaly on the style sheet to ensure that "what" gets translated into "how". If you look at it this way, the resulting makefile or ant.xml is more like the .obj or .EXE output by your C compiler. it doesnt need to be readable by you as long as it builds the product correctly.

You make the remark "It seems so awful to be forced to use antiquated versions of Java, with all those early mistakes in the language. But these companies have good reasons not to trust the newer versions of the language – heck, I don't trust the newer versions, from experience."

Could you list a couple of these experiences?

Ant's own Script task allows direct use of Python and other scripting languages in the build file. There are several examples of loops, and you can obviously use conditional constructs. Ant also runs inside a single VM, allowing many different Java tools to be used without each requiring a separate VM.


2004/01/09 02:28 EST (via web):
Take a look at Maven .. ( http://maven.apache.org/ ). Jelly scripts allow you to add conditional logic to the build process.

here is another attempt to oust autoconf and (n)ant as king of the build hill: http://lists.ximian.com/archives/public/mono-devel-list/2004-January/003429.html

Is AntBuilder? available or will it be with the next edition of the book?

Concerning a domain-specific language borrowing the syntax of its implementation language, see http://www.cs.rice.edu/~taha/publications/preprints/2003-12-01.pdf (via Lambda the Ultimate, http://lambda.weblogs.com/discuss/msgReader$10597).


2004/01/26 13:29 EST (via web):
I don't understand your point that "anything conditional is complicated" in Ant. Have you seen http://ant-contrib.sourceforge.net/ ? Look at "other tasks", there's if, try, foreach... Also, have you tried extending Ant with tasks that you find are missing?


2004/01/27 19:38 EST (via web):
You mention "industry standard tool" as though it is something only of interest to slow ponderous companies. Using a standard tool allows you to leverage the other tools that grow around it ("the whole product" in Geoffrey Moore speak). Techies tend to discount the advantage "the whole product" -- both because of NIH and that they tend to value the technology more than the solution -- but like you say, it is always harder than you think. And when I look back at our experience automating out build (documented here http://www.developertesting.com/developer_testing/000023.html) I can say with confidence that it was far less work for us to leverage the tool that grew up around Ant (CruiseControl?) than to write our own framework. -- Jtf

Reading this log made me smile. I can't tell you how many times we have spoken to development teams that arrived to this exact conclusion. Lets face it, we have all of these great development tools that help us code and generate code, but we hit the wall with manually scripting Ant and Make. This is the precise reason that Openmake was written almost 10 years ago. You really should check-out our 6.3 release. We leverage Ant with 100% reusable Perl scripts. For the most part we generate everything you need to do out of the box. If you want to do something we have not thought of, you use Perl as the main driver. Thanks for so elegantly explaining the frustrations of manually coding build solutions, for every project, every time. - Tracy Ragan, CEO Catalyst Systems Corporation www.openmake.com

This article is also relevant. Scons is also working on a port to jython I believe. http://today.java.net/pub/a/today/2003/06/10/jython.html


2004/02/05 09:13 EST (via web):
This article is also relevant. Scons is also working on a port to jython I believe. http://today.java.net/pub/a/today/2003/06/10/jython.html

"primarily doing homework exercises, under deadlines, with no real sense of quality of problem-solving." In my experience new programmers out of school fall into two groups : those who treat work like their college homework (do the least that you can get by with, no emotional buy-in) and those who join the team at work and contribute. And converting the first type to the second type usually isn't easy.

I have not used this one but people I know who have say it's just amazing. www.qef.com http://www.qef.com/html/qefvsmake.html


2004/04/10 16:17 EST (via web):
Perhaps "with heading" should not be a choice. Sorry about the above

I have not used this one but people I know who have say it's just amazing. www.qef.com http://www.qef.com/html/qefvsmake.html

Having never used Ant perhaps I can't speak, but I thought the major reason for using XML for ant was that it wasn't really seriously considered that humans would use it as a day to day in an editor, but more like that your IDE would take care of it for you, much like AntBuilder?. You'd right click on a file and say "Add to build..." or something and the IDE would create the XML file for you. Part of the problem with writing tools to work with Make is that the syntax is large enough and complicated enough that you need to be very careful how you parse it otherwise you're likely to destroy the file if someone else (a human, or another tool) has used some advanced feature.

-- Perry Lorier

subtopics: