|
|
@@ -272,59 +272,33 @@ |
|
|
|
<p>For more information see the <a href="antlibs/antunit/">Antlib's |
|
|
|
home page</a></p> |
|
|
|
<h3 class="section"> |
|
|
|
<a name="Apache Ivy is an Ant Sub-Project Now!"></a> |
|
|
|
Apache Ivy is an Ant Sub-Project Now! |
|
|
|
</h3> |
|
|
|
<h3>October 11, 2007 - Apache Ivy is an Ant Sub-Project Now!</h3> |
|
|
|
<p>Apache Ivy, "A Java based tool for tracking, resolving and |
|
|
|
managing project dependencies.", just finished <a href="http://incubator.apache.org/">Incubation</a> and has joined |
|
|
|
the Ant project. More information will be available from the Ant |
|
|
|
site soon.</p> |
|
|
|
<p>Until we've finished the migration, you can learn more about |
|
|
|
Ivy from its <a href="http://incubator.apache.org/ivy/">Incubator |
|
|
|
website</a>.</p> |
|
|
|
<h3 class="section"> |
|
|
|
<a name="Apache Ant"></a> |
|
|
|
Apache Ant |
|
|
|
</h3> |
|
|
|
<p> |
|
|
|
Apache Ant is a Java-based build tool. In theory, it is kind of like |
|
|
|
Make, but without Make's wrinkles. |
|
|
|
</p> |
|
|
|
Ant is a Java library and command-line tool. |
|
|
|
Ant's 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. |
|
|
|
</p> |
|
|
|
<p> |
|
|
|
Why another build tool when there is already <em>make</em>, <em>gnumake</em>, |
|
|
|
<em>nmake</em>, <em>jam</em>, and |
|
|
|
others? Because all those tools have limitations that Ant's original author |
|
|
|
couldn't live with when developing software across multiple platforms. Make-like |
|
|
|
tools are inherently shell-based -- they evaluate a set of dependencies, then |
|
|
|
execute commands not unlike what you would issue in a shell. This means that you |
|
|
|
can easily extend these tools by using or writing any program for the OS that |
|
|
|
you are working on. However, this also means that you limit yourself to the OS, |
|
|
|
or at least the OS type such as Unix, that you are working on. |
|
|
|
</p> |
|
|
|
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". |
|
|
|
</p> |
|
|
|
<p> |
|
|
|
Makefiles are inherently evil as well. Anybody who has worked on them for any |
|
|
|
time has run into the dreaded tab problem. "Is my command not executing |
|
|
|
because I have a space in front of my tab!!!" said the original author of |
|
|
|
Ant way too many times. Tools like Jam took care of this to a great degree, but |
|
|
|
still have yet another format to use and remember. |
|
|
|
</p> |
|
|
|
<p> |
|
|
|
Ant is different. Instead of a model where it is extended with shell-based |
|
|
|
commands, Ant is extended using Java classes. Instead of writing shell commands, |
|
|
|
the configuration files are XML-based, calling out a target tree where various |
|
|
|
tasks get executed. Each task is run by an object that implements a particular |
|
|
|
Task interface. |
|
|
|
</p> |
|
|
|
Ant is extremely flexible and does not impose coding conventions or |
|
|
|
directory layouts to the Java projects which adopt it as a build tool. |
|
|
|
</p> |
|
|
|
<p> |
|
|
|
Granted, this removes some of the expressive power that is inherent by being |
|
|
|
able to construct a shell command such as |
|
|
|
<code>`find . -name foo -exec rm {}`</code>, but it |
|
|
|
gives you the ability to be cross platform -- to work anywhere and everywhere. |
|
|
|
And hey, if you really need to execute a shell command, Ant has an |
|
|
|
<code><exec></code> task that |
|
|
|
allows different commands to be executed based on the OS that it is executing |
|
|
|
on. |
|
|
|
Software development projects looking for a solution combining build tool and |
|
|
|
dependency management can use Ant in combination with <a href="http://ant.apache.org/ivy/">Ivy</a>. |
|
|
|
</p> |
|
|
|
<h3 class="section"> |
|
|
|
<a name="Documentation"></a> |
|
|
|