git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@907840 13f79535-47bb-0310-9956-ffa450edef68master
@@ -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> | |||
@@ -99,66 +99,36 @@ | |||
home page</a></p> | |||
</section> | |||
<section name="Apache Ivy is an Ant Sub-Project Now!"> | |||
<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> | |||
</section> | |||
<section name="Apache Ant"> | |||
<p> | |||
Apache Ant is a Java-based build tool. In theory, it is kind of like | |||
Make, but without Make's wrinkles. | |||
</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> | |||
<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> | |||
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> | |||
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> | |||
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> | |||
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> | |||
<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> | |||
<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. | |||
</p> | |||
</section> | |||