1 |
|
---|
2 | A N T
|
---|
3 |
|
---|
4 |
|
---|
5 | What is it?
|
---|
6 | -----------
|
---|
7 |
|
---|
8 | Ant is a Java based build tool. In theory it is kind of like "make"
|
---|
9 | without makes wrinkles and with the full portability of pure java code.
|
---|
10 |
|
---|
11 |
|
---|
12 | Why?
|
---|
13 | ----
|
---|
14 |
|
---|
15 | Why another build tool when there is already make, gnumake, nmake, jam,
|
---|
16 | and others? Because all of those tools have limitations that its original
|
---|
17 | author couldn't live with when developing software across multiple platforms.
|
---|
18 |
|
---|
19 | Make-like tools are inherently shell based. They evaluate a set of
|
---|
20 | dependencies and then execute commands not unlike what you would issue on a
|
---|
21 | shell. This means that you can easily extend these tools by using or writing
|
---|
22 | any program for the OS that you are working on. However, this also means that
|
---|
23 | you limit yourself to the OS, or at least the OS type such as Unix, that you
|
---|
24 | are working on.
|
---|
25 |
|
---|
26 | Makefiles are inherently evil as well. Anybody who has worked on them for any
|
---|
27 | time has run into the dreaded tab problem. "Is my command not executing
|
---|
28 | because I have a space in front of my tab!!!" said the original author of Ant
|
---|
29 | way too many times. Tools like Jam took care of this to a great degree, but
|
---|
30 | still use yet another format to use and remember.
|
---|
31 |
|
---|
32 | Ant is different. Instead a model where it is extended with shell based
|
---|
33 | commands, it is extended using Java classes. Instead of writing shell
|
---|
34 | commands, the configuration files are XML based calling out a target tree
|
---|
35 | where various tasks get executed. Each task is run by an object which
|
---|
36 | implements a particular Task interface.
|
---|
37 |
|
---|
38 | Granted, this removes some of the expressive power that is inherent by being
|
---|
39 | able to construct a shell command such as `find . -name foo -exec rm {}` but
|
---|
40 | it gives you the ability to be cross platform. To work anywhere and
|
---|
41 | everywhere. And hey, if you really need to execute a shell command, Ant has
|
---|
42 | an exec rule that allows different commands to be executed based on the OS
|
---|
43 | that it is executing on.
|
---|
44 |
|
---|
45 | The Latest Version
|
---|
46 | ------------------
|
---|
47 |
|
---|
48 | Details of the latest version can be found on the Apache Ant
|
---|
49 | Project web site <http://ant.apache.org/>.
|
---|
50 |
|
---|
51 |
|
---|
52 | Documentation
|
---|
53 | -------------
|
---|
54 |
|
---|
55 | Documentation is available in HTML format, in the docs/ directory.
|
---|
56 | For information about building and installing Ant, see
|
---|
57 | docs/manual/index.html
|
---|
58 |
|
---|
59 |
|
---|
60 | Licensing
|
---|
61 | ---------
|
---|
62 |
|
---|
63 | This software is licensed under the terms you may find in the file
|
---|
64 | named "LICENSE" in this directory.
|
---|
65 |
|
---|
66 |
|
---|
67 | Thanks for using Ant.
|
---|
68 |
|
---|
69 | The Apache Ant Project
|
---|
70 | <http://ant.apache.org/>
|
---|