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; | |||
} |