Apache Ant is a Java library and command-line tool whose mission is to drive processes described in build files as targets and extension points dependent upon each other. The main known usage of Ant is the build of Java applications. Ant supplies a number of built-in tasks allowing to compile, assemble, test and run Java applications. Ant can also be used effectively to build non Java applications, for instance C or C++ applications. More generally, Ant can be used to pilot any type of process which can be described in terms of targets and tasks.
Ant is written in Java. Users of Ant can develop their own "antlibs" containing Ant tasks and types, and are offered a large number of ready-made commercial or open-source "antlibs".
Ant is extremely flexible and does not impose coding conventions or directory layouts to the Java projects which adopt it as a build tool.
Software development projects looking for a solution combining build tool and dependency management can use Ant in combination with Apache Ivy.
For me Ant prooves that you should move to Maven or Gradle. Dependency management is a pain (sometime Ivy can help) and you can easily ent-up with "spaghetti network" of dependant projects, subprojects, tasks etc. Build scripts in Ant-based projects that were growing for several years are often unreadable and unmaintainable. You must be very neat to keep Ant build scripts simple.
The trend seems to be moving towards Maven and Gradle as the default Java build systems. Personally I'm still a sucker for ANT as it lets me express things I want to do in my way. Maven by comparison is an unruly thing that wants to do everything the maven way or don't do it at all.
Now convention isn't that bad, and dependency management is a great feature, but Maven (especially Maven 2) often hides too much of the underlying cause when things go wrong. If there's a compiler error, Maven might tell you it can't find an artifact in some remote repository. With ANT this happens for less often.
Large ANT scripts can become hard to digest though and it's all to easy to go overboard with custom "smart" abstractions.
ANT served it's purpose back in 2001, but time has moved on. These days Maven and Gradle more than outshine this grandfather of build systems and everytime I come across an ant project I get a bit scared because I know it'll be difficult to "just import it" as I can with gradle and maven.
Still, deserves some respect for being the first.