git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@267632 13f79535-47bb-0310-9956-ffa450edef68master
@@ -0,0 +1,82 @@ | |||||
<?xml version="1.0"?> | |||||
<?xml-stylesheet href="docbookx.css" type="text/css"?> | |||||
<!--DOCTYPE article SYSTEM "docbookx.dtd"--> | |||||
<article> | |||||
<artheader> | |||||
<title>Utah Design and Programmer's Guide</title> | |||||
<author> | |||||
<firstname>James Duncan</firstname> | |||||
<surname>Davidson</surname> | |||||
</author> | |||||
<copyright> | |||||
<year>2000</year> | |||||
<holder>The Apache Software Foundation</holder> | |||||
</copyright> | |||||
</artheader> | |||||
<para>This document describes the design goals for Utah, a proposed | |||||
replacement for the current Ant build tool. I'm calling this work "Utah" as I | |||||
hope to be done with it by the end of the W3C DOM Working Group meeting taking | |||||
place in Orem Utah Mar 20-23. No other meaning is intended to be conveyed by | |||||
the codename.</para> | |||||
<sect1> | |||||
<title>History</title> | |||||
<para>Ant was originally designed as a small, lightweight | |||||
<trademark>Java</trademark> based build tool. It was first created out of shear | |||||
frustration with make and all its variants. </para> | |||||
<para>This first public version of Ant, Ant 1.0 which was released as part | |||||
of the Tomcat and Watchdog code drops from Sun Microsystems, was quite popular. | |||||
Everyone loved its simplicity. However, everyone wanted to do something | |||||
different. Lots of solutions were proposed, some were hacked in. At some point | |||||
it was necessary to take a clean look at what it was becoming and the types of | |||||
problems it was really intended to solve.Utah is that fresh look It is probably | |||||
not going to be entirely backwards compatible, but it is hoped that by starting | |||||
out with a fresh look at the goals and requirements of Ant, we can end up with | |||||
a better tool.</para> | |||||
</sect1> | |||||
<sect1> | |||||
<title>Design Goals</title> | |||||
<para>Simplicity: </para> | |||||
<para>Ant must be simple to use and simple to extend. Of course, the | |||||
definition of simple can vary depending on which audience is chosen. For Ant, | |||||
since it is a build tool aimed at Java developers, the goal is simplicity of | |||||
use and extension for a competent Java programmer.</para> | |||||
<para>Understandability: </para> | |||||
<para>The way Ant works should be clearly understandable for a first time | |||||
as well as a veteran user. The mechanism to extend Amsterdam must be | |||||
understandable. And the build file syntax must be eminently | |||||
understandable.</para> | |||||
<para>Extensibility: </para> | |||||
<para>Ant must provide an easy to use extensibility path. Extensions must | |||||
be easy to write for the programmer and easy to place where they can best be | |||||
used.</para> | |||||
</sect1> | |||||
<sect1> | |||||
<title>Runtime Conceptual Overview</title> | |||||
<para>Ant works with entities called Projects. A Project is a collection of | |||||
Property definitions, Task definitions, and Targets.</para> | |||||
<para>A Property is a mutable name-value pair that is scoped to the | |||||
Project. As Tasks within Targets are executed, the Property list of the Project | |||||
can be added to, Property values can be changed, and Properties can even be | |||||
removed. This allows runtime information to be passed to the Tasks either by | |||||
the user or by programmatic result of preceding Tasks.</para> | |||||
<para>A Target is a unit of work within the Project. For example, a Project | |||||
could have a Target that built a set of classes in development mode, another | |||||
Target that packaged the classes into a distributable form, and yet another | |||||
Target that cleaned up everything. Targets can indicate that they depend on | |||||
other Targets. If such a dependency is indicated, the runtime ensures that the | |||||
Target that is depended on is executed before executing any Tasks for the | |||||
current Target.</para> | |||||
<para>Targets contain Tasks. More accurately, they contain implementations | |||||
of a Task. For example, a Task that performs basic Java classfile compilation | |||||
is provided with Ant. Another task that performs the JAR operation is provided. | |||||
These Tasks are very different, but each implements the Task interface. Each | |||||
Task is configured for its purpose. When a Target is executed, the sequence of | |||||
Tasks within that target are executed in turn.</para> | |||||
<para>More specifically, when a Target is executed, the list of Tasks for | |||||
that Target is retrieved by the runtime. Each Task is created as a new object, | |||||
its configuration methods called with the information that is used, and then | |||||
the Task is executed. By performing configuration just before the Task is | |||||
executed, any properties that were defined or modified by other Tasks can | |||||
affect the currently running task.</para> | |||||
</sect1> | |||||
</article> |
@@ -0,0 +1,64 @@ | |||||
/* Use Times New Roman for default font */ | |||||
$DOCUMENT { | |||||
font-family: "Times New Roman"; | |||||
font-size: 12pt; | |||||
margin-top: 5px; | |||||
margin-left: 5px; | |||||
} | |||||
$COMMENT { | |||||
display: block; | |||||
color: purple; | |||||
white-space: pre; | |||||
} | |||||
$PROCINS { | |||||
color: black; | |||||
background-color: #c0c0c0; | |||||
} | |||||
abbrev, abstract, ackno, acronym, address, affiliation, alt, answer, appendix, areaset, areaspec, arg, artheader, article, artpagenums, attribution, audioobject, author, authorblurb, authorgroup, authorinitials, bibliodiv, biblioentry, bibliography, bibliomisc, bibliomixed, biblioset, blockquote, book, bookbiblio, bookinfo, bridgehead, callout, calloutlist, caption, caution, chapter, citerefentry, citetitle, cmdsynopsis, collab, collabname, colophon, command, comment, confdates, confgroup, confnum, confsponsor, conftitle, contractnum, contractsponsor, contrib, copyright, corpauthor, corpname, date, dedication, docinfo, edition, editor, entry, entrytbl, epigraph, equation, example, figure, firstname, footnote, formalpara, funcdef, funcprototype, funcsynopsis, funcsynopsisinfo, glossary, glossdef, glossdiv, glossentry, glosslist, glosssee, glossseealso, glossterm, graphicco, group, guibutton, guiicon, guilabel, guimenu, guimenuitem, guisubmenu, highlights, holder, honorific, imageobject, imageobjectco, important, index, indexdiv, indexentry, indexterm, informalequation, informalexample, informalfigure, informaltable, inlineequation, inlinemediaobject, interface, invpartnumber, isbn, issn, issuenum, itemizedlist, itermset, jobtitle, keycap, keycombo, keysym, keyword, keywordset, label, legalnotice, lineage, link, listitem, literallayout, lot, lotentry, manvolnum, mediaobject, mediaobjectco, member, menuchoice, modespec, mousebutton, msg, msgaud, msgentry, msgexplan, msginfo, msglevel, msgmain, msgorig, msgrel, msgset, msgsub, msgtext, note, objectinfo, olink, option, orderedlist, orgdiv, orgname, othercredit, othername, pagenums, para, paramdef, part, partintro, phrase, preface, primary, primaryie, printhistory, procedure, productname, productnumber, programlisting, programlistingco, pubdate, publisher, publishername, pubsnumber, qandadiv, qandaentry, qandaset, question, refclass, refdescriptor, refentry, refentrytitle, reference, refmeta, refmiscinfo, refname, refnamediv, refpurpose, refsect1, refsect1info, refsect2, refsect2info, refsect3, refsect3info, refsynopsisdiv, refsynopsisdivinfo, releaseinfo, replaceable, revhistory, revision, revnumber, revremark, row, screen, screenco, screeninfo, screenshot, secondary, secondaryie, sect1, sect1info, sect2, sect2info, sect3, sect3info, sect4, sect4info, sect5, sect5info, section, sectioninfo, see, seealso, seealsoie, seeie, seg, seglistitem, segmentedlist, segtitle, seriesinfo, seriesvolnums, set, setindex, setinfo, shortaffil, shortcut, sidebar, simpara, simplelist, simplesect, step, subject, subjectset, subjectterm, substeps, subtitle, surname, synopfragment, synopfragmentref, synopsis, table, tbody, term, tertiary, tertiaryie, textobject, tfoot, tgroup, thead, tip, title, titleabbrev, toc, tocback, tocchap, tocentry, tocfront, toclevel1, toclevel2, toclevel3, toclevel4, toclevel5, tocpart, ulink, variablelist, varlistentry, videoobject, volumenum, warning, year { | |||||
display: block; | |||||
} | |||||
surname { | |||||
display: inline; | |||||
} | |||||
firstname { | |||||
display: inline; | |||||
} | |||||
year { | |||||
display: inline; | |||||
} | |||||
holder { | |||||
display: inline; | |||||
} | |||||
title { | |||||
margin-bottom: 6pt; | |||||
font-weight: bold; | |||||
font-size: 12pt; | |||||
margin-top: 12pt; | |||||
} | |||||
author { | |||||
font-family: sans-serif; | |||||
} | |||||
article { | |||||
font-family: sans-serif; | |||||
font-size: 10pt; | |||||
} | |||||
para { | |||||
margin-top: 6pt; | |||||
margin-bottom: 6pt; | |||||
} | |||||
itemizedlist { | |||||
margin-left: 24pt; | |||||
} |