Not sure I follow this comment. But anything non-trivial needs some sort of scripting. Take ant for example, it started out as a pure declarative build system that worked ok for simple things. Then complexity reared its ugly head - needed loops and conditionals and the tool mutated into the awful beast it is today. So I think you have it backwards.
That is one way to do things, I think the wrong way. If you need something more sophisticated your build system should have a way to write code that is testable and then used declaratively in your build. The answer should not be scripting in your build file.