From: Gerry S. <ger...@us...> - 2002-08-15 00:37:40
|
Update of /cvsroot/nant/nant/doc/help/fundamentals In directory usw-pr-cvs1:/tmp/cvs-serv29988/help/fundamentals Added Files: fog0000000022.html fog0000000023.html fog0000000024.html fog0000000025.html fog0000000026.html fog0000000027.html fog0000000080.html fog0000000082.html Log Message: * added help docs --- NEW FILE: fog0000000022.html --- <!-- Published by Fog Creek Software CityDesk KMAOLQRKGNJKSMQD/76B20119/22 --> <!-- topic template --> <html> <head> <meta http-equiv="Content-Language" content="en-ca" /> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252" /> <meta name="description" content="Build Files" /> <link rel="stylesheet" type="text/css" href="../style.css" /> <title>Build Files</title> </head> <body> <table width="100%" border="0" cellspacing="0" cellpadding="2" class="NavBar"> <tr><td class="NavBar-Cell" width="100%"> <a title="NAnt home page" href="http://nant.sourceforge.net"><b>NAnt</b></a> <img alt="->" src="../images/arrow.gif" /> <a href="../index.html">Help</a> <img alt="->" src="../images/arrow.gif" /> <A href="fog0000000027.html">Fundamentals</A> <IMG height=9 alt="->" src="../images/arrow.gif" width=13 border=0> Build Files </td></tr> </table> <h1>Build Files</h1> <P>NAnt's build files are written in XML. Each build file contains one <A href="fog0000000023.html">project</A> and a number of <A href="fog0000000024.html">targets</A>. Each target contains a number of <A href="fog0000000025.html">tasks</A>.</P> <P>Here is a simple build file that compiles a C# HelloWorld project. </P> <BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"><PRE><?xml version="1.0"?> <project name="Hello World" default="build" basedir="."> <description>The Hello World of build files.</description><BR> <property name="debug" value="true"/> <target name="clean" description="remove all generated files"> <delete file="HelloWorld.exe" failonerror="false"/> <delete file="HelloWorld.pdb" failonerror="false"/> </target> <target name="build" description="compiles the source code"> <csc target="exe" output="HelloWorld.exe" debug="${debug}"> <sources> <includes name="HelloWorld.cs"/> </sources> </csc> </target> </project></PRE></BLOCKQUOTE> <P>In this example there are two targets, clean and build. By default the build target will be called.</P> <H3>Examples</H3> <P>You can find the files you need to try out these examples in the <CODE>examples</CODE> folder that comes with the NAnt distribution.</P> <BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"> <DIV><PRE>nant</PRE></DIV></BLOCKQUOTE> <P>Runs NAnt and builds the project in debug mode (the default).</P> <BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"> <DIV><PRE>nant clean</PRE></DIV></BLOCKQUOTE> <P>Runs NAnt and removes the compiled files if they exist.</P> <BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"> <DIV><PRE>nant -D:debug=false</PRE></DIV></BLOCKQUOTE> <P>Runs NAnt and builds the project in non-debug mode. Even though the build file sets the debug property to true, properties set on the command line override any properties set in the build file.</P> <P><STRONG>Important</STRONG>: Some tasks like the compiler tasks will only execute if the date stamp of the generated file is older than the source files. If you compile HelloWorld project in debug mode and then try to compile it again in non-debug mode without first cleaning nothing will happen because NAnt will think the project does not need rebuilding.</P> </body> </html> --- NEW FILE: fog0000000023.html --- <!-- Published by Fog Creek Software CityDesk KMAOLQRKGNJKSMQD/76B20119/23 --> <!-- topic template --> <html> <head> <meta http-equiv="Content-Language" content="en-ca" /> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252" /> <meta name="description" content="Projects" /> <link rel="stylesheet" type="text/css" href="../style.css" /> <title>Projects</title> </head> <body> <table width="100%" border="0" cellspacing="0" cellpadding="2" class="NavBar"> <tr><td class="NavBar-Cell" width="100%"> <a title="NAnt home page" href="http://nant.sourceforge.net"><b>NAnt</b></a> <img alt="->" src="../images/arrow.gif" /> <a href="../index.html">Help</a> <img alt="->" src="../images/arrow.gif" /> <A href="fog0000000027.html">Fundamentals</A> <IMG height=9 alt="->" src="../images/arrow.gif" width=13 border=0> Projects </td></tr> </table> <h1>Projects</h1> <P>A project has these attributes:</P> <DIV class=Table-Section> <TABLE class=Table> <TBODY> <TR> <TH class=Table-Header>Attribute</TH> <TH class=Table-Header>Description</TH> <TH class="Table-Header align=" center?>Required</TH></TR> <TR> <TD class=Table-Cell>name</TD> <TD class=Table-Cell>The name of the project.</TD> <TD class=Table-Cell align=middle>No</TD></TR> <TR> <TD class=Table-Cell>default</TD> <TD class=Table-Cell>The default target to use when no target is supplied.</TD> <TD class=Table-Cell align=middle>Yes</TD></TR> <TR> <TD class=Table-Cell>basedir</TD> <TD class=Table-Cell>The base directory from which all path calculations are done. The current directory is used by default.</TD> <TD class=Table-Cell align=middle>No</TD></TR></TBODY></TABLE></DIV> <P>Optionally, a description for the project can be provided as a top-level <description> element. The text contained in the description element is used when the <NOBR><CODE>-projecthelp</CODE></NOBR> command line option is used. See the <A href="fog0000000022.html">example build file</A> for details.</P> <P>Each project defines one or more <A href="fog0000000024.html">targets</A>. A target is a set of <A href="fog0000000025.html">tasks</A> to be executed. When starting NAnt, you can select which target(s) you want to have executed. When no target is given, the project's default is used.</P> </body> </html> --- NEW FILE: fog0000000024.html --- <!-- Published by Fog Creek Software CityDesk KMAOLQRKGNJKSMQD/76B20119/24 --> <!-- topic template --> <html> <head> <meta http-equiv="Content-Language" content="en-ca" /> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252" /> <meta name="description" content="Targets" /> <link rel="stylesheet" type="text/css" href="../style.css" /> <title>Targets</title> </head> <body> <table width="100%" border="0" cellspacing="0" cellpadding="2" class="NavBar"> <tr><td class="NavBar-Cell" width="100%"> <a title="NAnt home page" href="http://nant.sourceforge.net"><b>NAnt</b></a> <img alt="->" src="../images/arrow.gif" /> <a href="../index.html">Help</a> <img alt="->" src="../images/arrow.gif" /> <A href="fog0000000027.html">Fundamentals</A> <IMG height=9 alt="->" src="../images/arrow.gif" width=13 border=0> Targets </td></tr> </table> <h1>Targets</h1> <P>A target has these attributes:</P> <DIV class=Table-Section> <TABLE class=Table> <TBODY> <TR> <TH class=Table-Header>Attribute</TH> <TH class=Table-Header>Description</TH> <TH class=Table-Header align=middle>Required</TH></TR> <TR> <TD class=Table-Cell>name</TD> <TD class=Table-Cell>the name of the target.</TD> <TD class=Table-Cell align=middle>Yes</TD></TR> <TR> <TD class=Table-Cell>depends</TD> <TD class=Table-Cell>a comma-separated list of names of targets on which this target depends.</TD> <TD class=Table-Cell align=middle>No</TD></TR> <TR> <TD class=Table-Cell>if</TD> <TD class=Table-Cell>the name of the property that must be set in order for this target to execute.</TD> <TD class=Table-Cell align=middle>No</TD></TR> <TR> <TD class=Table-Cell>unless</TD> <TD class=Table-Cell>the name of the property that must not be set in order for this target to execute.</TD> <TD class=Table-Cell align=middle>No</TD></TR> <TR> <TD class=Table-Cell>description</TD> <TD class=Table-Cell>a short description of this target's function.</TD> <TD class=Table-Cell align=middle>No</TD></TR></TBODY></TABLE></DIV><A name=tasks> <P></P></A> <P>A target can depend on other targets. You might have a target for compiling, for example, and a target for creating a distributable. You can only build a distributable when you have compiled first, so the distribute target<EM> depends on </EM>the compile target. NAnt resolves these dependencies.</P> <P>NAnt tries to execute the targets in the <CODE>depends</CODE> attribute in the order they appear from left to right. It is possible that a target can get executed earlier when an earlier target depends on it:</P> <BLOCKQUOTE><PRE><target name="A"/> <target name="B" depends="A"/> <target name="C" depends="B"/> <target name="D" depends="C,B,A"/></PRE></BLOCKQUOTE> <P>Suppose we want to execute target D. From its <CODE>depends</CODE> attribute, you might think that first target C, then B and then A is executed. Wrong! C depends on B, and B depends on A, so first A is executed, then B, then C, and finally D.</P> <P>A target gets executed only once, even when more than one target depends on it (see the previous example).</P> <P>A target also has the ability to perform its execution if or unless a property has been set. This allows, for example, better control on the building process depending on the state of the system (OS, command-line property defines, etc.). To make a target <I>sense</I> this property, you should add the <CODE>if</CODE> or <CODE>unless</CODE> attribute with the name of the property that the target should react to. For example:</P> <BLOCKQUOTE><PRE><target name="build-module-A" if="module-A-present"/></PRE><PRE><target name="build-own-fake-module-A" unless="module-A-present"/></PRE></BLOCKQUOTE> <P>If no <CODE>if</CODE> and no <CODE>unless</CODE> attribute is present, the target will always be executed.</P> <P>The optional <CODE>description</CODE> attribute can be used to provide a one-line description of this target, which is printed by the <NOBR><CODE>-projecthelp</CODE></NOBR> command-line option.</P> </body> </html> --- NEW FILE: fog0000000025.html --- <!-- Published by Fog Creek Software CityDesk KMAOLQRKGNJKSMQD/76B20119/25 --> <!-- topic template --> <html> <head> <meta http-equiv="Content-Language" content="en-ca" /> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252" /> <meta name="description" content="Tasks" /> <link rel="stylesheet" type="text/css" href="../style.css" /> <title>Tasks</title> </head> <body> <table width="100%" border="0" cellspacing="0" cellpadding="2" class="NavBar"> <tr><td class="NavBar-Cell" width="100%"> <a title="NAnt home page" href="http://nant.sourceforge.net"><b>NAnt</b></a> <img alt="->" src="../images/arrow.gif" /> <a href="../index.html">Help</a> <img alt="->" src="../images/arrow.gif" /> <A href="fog0000000027.html">Fundamentals</A> <IMG height=9 alt="->" src="../images/arrow.gif" width=13 border=0> Tasks </td></tr> </table> <h1>Tasks</h1> <P>A task is a piece of code that can be executed.</P> <P>A task can have multiple attributes (or arguments, if you prefer). The value of an attribute may contain references to a <A href="fog0000000082.html">property</A>. These references will be resolved before the task is executed.</P> <P>Tasks have a common structure:</P> <BLOCKQUOTE><PRE><<I>name</I> <I>attribute1</I>="<I>value1</I>" <I>attribute2</I>="<I>value2</I>" ... /></PRE></BLOCKQUOTE> <P>where <I>name</I> is the name of the task, <I>attribute#</I> is the attribute name, and <I>value#</I> is the value for this attribute.</P> <P><IMG height=9 alt=">" src="../images/bullet.gif" width=5 border=0 DESIGNTIMESP="19617"> For more information see the <A href="../tasks/index.html">Task Reference</A>.</P> </body> </html> --- NEW FILE: fog0000000026.html --- <!-- Published by Fog Creek Software CityDesk KMAOLQRKGNJKSMQD/76B20119/26 --> <!-- topic template --> <html> <head> <meta http-equiv="Content-Language" content="en-ca" /> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252" /> <meta name="description" content="File Sets" /> <link rel="stylesheet" type="text/css" href="../style.css" /> <title>File Sets</title> </head> <body> <table width="100%" border="0" cellspacing="0" cellpadding="2" class="NavBar"> <tr><td class="NavBar-Cell" width="100%"> <a title="NAnt home page" href="http://nant.sourceforge.net"><b>NAnt</b></a> <img alt="->" src="../images/arrow.gif" /> <a href="../index.html">Help</a> <img alt="->" src="../images/arrow.gif" /> <A href="fog0000000027.html">Fundamentals</A> <IMG height=9 alt="->" src="../images/arrow.gif" width=13 border=0> File Sets </td></tr> </table> <h1>File Sets</h1> <P>File Sets are groups of files. These files can be found in a directory tree starting in a base directory and are matched by patterns taken from a number of patterns. File Sets can appear inside tasks that support this feature or at the project level, i.e., as children of <CODE>project</CODE>.</P> <DIV class=Table-Section> <TABLE class=Table> <TBODY> <TR> <TH class=Table-Header>Attribute</TH> <TH class=Table-Header>Description</TH> <TH class=Table-Header align=middle>Required</TH></TR> <TR> <TD class=Table-Cell>basedir</TD> <TD class=Table-Cell>The base of the directory tree of this FileSet.</TD> <TD class=Table-Cell align=middle>Yes</TD></TR> <TR> <TD class=Table-Cell>defaultexcludes</TD> <TD class=Table-Cell>Indicates whether default excludes should be used or not (<CODE>true | false</CODE>); default excludes are used when omitted.</TD> <TD class=Table-Cell align=middle>No</TD></TR> <TR> <TD class=Table-Cell>includes</TD> <TD class=Table-Cell>comma-separated list of patterns of files that must be included; all files are included when omitted.</TD> <TD class=Table-Cell align=middle>No</TD></TR> <TR> <TD class=Table-Cell>excludes</TD> <TD class=Table-Cell>comma-separated list of patterns of files that must be excluded; no files (except default excludes) are excluded when omitted.</TD> <TD class=Table-Cell align=middle>No</TD></TR></TBODY></TABLE></DIV> <P>The following patterns are excluded by default:</P> <UL> <LI> <DIV>**/CVS/*</DIV> <LI> <DIV>**/.cvsignore</DIV></LI></UL> <H3><A name=patterns>Patterns</A></H3> <P>As described earlier, patterns are used for the inclusion and exclusion. These patterns look very much like the patterns used in DOS and UNIX:</P> <P>'*' matches zero or more characters, '?' matches one character.</P> <P><CODE>*.java</CODE> matches <CODE>.java</CODE>, <CODE>x.java</CODE> and <CODE>FooBar.java</CODE>, but not <CODE>FooBar.xml</CODE> (does not end with <CODE>.java</CODE>).</P> <P><CODE>?.java</CODE> matches <CODE>x.java</CODE>, <CODE>A.java</CODE>, but not <CODE>.java</CODE> or <CODE>xyz.java</CODE> (both don't have one character before <CODE>.java</CODE>).</P> <P>Combinations of <CODE>*</CODE>'s and <CODE>?</CODE>'s are allowed.</P> <P>Matching is done per-directory. This means that first the first directory in the pattern is matched against the first directory in the path to match. Then the second directory is matched, and so on. For example, when we have the pattern <CODE>/?abc/*/*.java</CODE> and the path <CODE>/xabc/foobar/test.java</CODE>, the first <CODE>?abc</CODE> is matched with <CODE>xabc</CODE>, then <CODE>*</CODE> is matched with <CODE>foobar</CODE>, and finally <CODE>*.java</CODE> is matched with <CODE>test.java</CODE>. They all match, so the path matches the pattern.</P> <P>To make things a bit more flexible, we add one extra feature, which makes it possible to match multiple directory levels. This can be used to match a complete directory tree, or a file anywhere in the directory tree. To do this, <CODE>**</CODE> must be used as the name of a directory. When <CODE>**</CODE> is used as the name of a directory in the pattern, it matches zero or more directories. For example: <CODE>/test/**</CODE> matches all files/directories under <CODE>/test/</CODE>, such as <CODE>/test/x.java</CODE>, or <CODE>/test/foo/bar/xyz.html</CODE>, but not <CODE>/xyz.xml</CODE>.</P> <P>There is one "shorthand" - if a pattern ends with <CODE>/</CODE> or <CODE>\</CODE>, then <CODE>**</CODE> is appended. For example, <CODE>mypackage/test/</CODE> is interpreted as if it were <CODE>mypackage/test/**</CODE>.</P> <H3>Examples</H3> <DIV class=Table-Section> <TABLE class=Table> <TBODY> <TR> <TR> <TH class=Table-Header>Pattern</TH> <TH class=Table-Header>Match</TH></TR> <TR> <TD class=Table-Cell><CODE>**/CVS/*</CODE></TD> <TD class=Table-Cell>Matches all files in <CODE>CVS</CODE> directories that can be located anywhere in the directory tree.<BR>Matches: <PRE> CVS/Repository org/apache/CVS/Entries org/apache/jakarta/tools/ant/CVS/Entries </PRE>But not: <PRE> org/apache/CVS/foo/bar/Entries</PRE>(<CODE>foo/bar/</CODE> part does not match)</TD><PRE></PRE></TR> <TR> <TD class=Table-Cell><CODE>org/apache/jakarta/**</CODE></TD> <TD class=Table-Cell>Matches all files in the <CODE>org/apache/jakarta</CODE> directory tree.<BR>Matches: <PRE> org/apache/jakarta/tools/ant/docs/index.html org/apache/jakarta/test.xml </PRE>But not: <PRE> org/apache/xyz.java </PRE>(<CODE>jakarta/</CODE> part is missing)</TD></TR> <TR> <TD class=Table-Cell><CODE>org/apache/**/CVS/*</CODE></TD> <TD class=Table-Cell>Matches all files in <CODE>CVS</CODE> directories that are located anywhere in the directory tree under <CODE>org/apache</CODE>.<BR>Matches: <PRE> org/apache/CVS/Entries org/apache/jakarta/tools/ant/CVS/Entries </PRE>But not: <PRE> org/apache/CVS/foo/bar/Entries </PRE>(<CODE>foo/bar/</CODE> part does not match)</TD></TR> <TR> <TD class=Table-Cell><CODE>**/test/**</CODE></TD> <TD class=Table-Cell>Matches all files that have a <CODE>test</CODE> element in their path, including <CODE>test</CODE> as a filename.</TD></TR></TBODY></TABLE></DIV> <P> </P> </body> </html> --- NEW FILE: fog0000000027.html --- <!-- Published by Fog Creek Software CityDesk KMAOLQRKGNJKSMQD/76B20119/27 --> <!-- contents template --> <html> <head> <meta http-equiv="Content-Language" content="en-ca" /> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252" /> <meta name="description" content="Fundamentals" /> <link rel="stylesheet" type="text/css" href="../style.css" /> <title>Fundamentals</title> </head> <body> <table width="100%" border="0" cellspacing="0" cellpadding="2" class="NavBar"> <tr><td class="NavBar-Cell" width="100%"> <a title="NAnt home page" href="http://nant.sourceforge.net"><b>NAnt</b></a> <img alt="->" src="../images/arrow.gif" /> <a href="../index.html">Help</a> <img alt="->" src="../images/arrow.gif" /> Fundamentals </td></tr> </table> <h1>Fundamentals</h1> <p>The basic concepts needed to understand and use NAnt.</p> <p><img alt=">" src="../images/bullet.gif" /> <a href="fog0000000080.html">Running NAnt</a></p> <p><img alt=">" src="../images/bullet.gif" /> <a href="fog0000000022.html">Build Files</a></p> <p><img alt=">" src="../images/bullet.gif" /> <a href="fog0000000023.html">Projects</a></p> <p><img alt=">" src="../images/bullet.gif" /> <a href="fog0000000024.html">Targets</a></p> <p><img alt=">" src="../images/bullet.gif" /> <a href="fog0000000025.html">Tasks</a></p> <p><img alt=">" src="../images/bullet.gif" /> <a href="fog0000000082.html">Properties</a></p> <p><img alt=">" src="../images/bullet.gif" /> <a href="fog0000000026.html">File Sets</a></p> </body> </html> --- NEW FILE: fog0000000080.html --- <!-- Published by Fog Creek Software CityDesk KMAOLQRKGNJKSMQD/76B20119/80 --> <!-- topic template --> <html> <head> <meta http-equiv="Content-Language" content="en-ca" /> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252" /> <meta name="description" content="Running NAnt" /> <link rel="stylesheet" type="text/css" href="../style.css" /> <title>Running NAnt</title> </head> <body> <table width="100%" border="0" cellspacing="0" cellpadding="2" class="NavBar"> <tr><td class="NavBar-Cell" width="100%"> <a title="NAnt home page" href="http://nant.sourceforge.net"><b>NAnt</b></a> <img alt="->" src="../images/arrow.gif" /> <a href="../index.html">Help</a> <img alt="->" src="../images/arrow.gif" /> <A href="fog0000000027.html">Fundamentals</A> <IMG height=9 alt="->" src="../images/arrow.gif" width=13 border=0> Running NAnt </td></tr> </table> <h1>Running NAnt</h1> <P>Running NAnt is simple once you have it <A href="../introduction/fog0000000013.html">installed</A>, just type <NOBR><CODE>nant</CODE></NOBR>. Type <NOBR><CODE>nant -help</CODE></NOBR> to get usage information.</P> <H3>Specifying the Build File</H3> <P>When nothing is specified, NAnt looks for a file ending with <NOBR><CODE>.build</CODE></NOBR>, e.g., <NOBR><CODE>nant.build</NOBR></CODE>, in the current directory. If found, it uses that file as the build file. If more than one file is found you need to specify the build file using the <NOBR><CODE>-buildfile</NOBR></CODE> option (see below).</P> <P>If you use the <NOBR><CODE>-find</NOBR></CODE> option, NAnt will search for a build file in the parent directory, and so on, until the root of the file system has been reached. To make NAnt use another build file, use the command-line option -buildfile:<EM>file</EM>, where <EM>file</EM> is the build file you want to use.</P> <H3>Specifying Targets</H3> <P>You can specify one or more targets that should be executed. When omitted, the target that is specified in the <CODE>default</CODE> attribute of the <CODE><project></CODE> tag is used.</P> <P>The <NOBR><CODE>-projecthelp</CODE></NOBR> option prints out the description of the project, if it exists, followed by a list of the project's targets. First those with a description, then those without one.</P> <H3>Setting Properties</H3> <P>To override properties specified in the build file use the <NOBR><CODE>-D<I>property</I>=<I>value</I></CODE></NOBR> option, where <I>property</I> is the name of the property, and <I>value</I> is the value for that property. By default all environment variables are imported into with the <CODE>nant.env.*</CODE> prefix, e.g., the property <CODE>nant.env.PATH</CODE> would contain the current path.</P> <H3>Examples</H3> <BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"> <DIV><PRE>nant</PRE></DIV></BLOCKQUOTE> <P>Runs NAnt using the file ending in <CODE>*.build.xml</CODE> file in the current directory, on the default target.</P> <BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"> <DIV><PRE>nant -buildfile:..\ProjectName.build</PRE></DIV></BLOCKQUOTE> <P>Runs NAnt using the <CODE>ProjectName.build</CODE> file in the parent directory, on the default target.</P> <BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"> <DIV><PRE>nant clean</PRE></DIV></BLOCKQUOTE> <P>Runs NAnt using the default build file in the current directory, on a target called <CODE>clean</CODE>.</P> <BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"> <DIV><PRE>nant -D:debug=false clean dist</PRE></DIV></BLOCKQUOTE> <P>Runs NAnt using the default build file in the current directory, first on the <CODE>clean</CODE> target and then on the <CODE>dist</CODE> target while setting the <CODE>debug</CODE> property to <CODE>false</CODE>. This could, for example, make a release distribution from scratch.</P> </body> </html> --- NEW FILE: fog0000000082.html --- <!-- Published by Fog Creek Software CityDesk KMAOLQRKGNJKSMQD/76B20119/82 --> <!-- topic template --> <html> <head> <meta http-equiv="Content-Language" content="en-ca" /> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252" /> <meta name="description" content="Properties" /> <link rel="stylesheet" type="text/css" href="../style.css" /> <title>Properties</title> </head> <body> <table width="100%" border="0" cellspacing="0" cellpadding="2" class="NavBar"> <tr><td class="NavBar-Cell" width="100%"> <a title="NAnt home page" href="http://nant.sourceforge.net"><b>NAnt</b></a> <img alt="->" src="../images/arrow.gif" /> <a href="../index.html">Help</a> <img alt="->" src="../images/arrow.gif" /> <A href="fog0000000027.html">Fundamentals</A> <IMG height=9 alt="->" src="../images/arrow.gif" width=13 border=0> Properties </td></tr> </table> <h1>Properties</h1> <P>A project can have a set of properties. These might be set in the buildfile by the property task, or might be set outside NAnt. A property has a name and a value. Properties may be used in the value of task attributes. This is done by placing the property name between "<CODE>${</CODE>" and "<CODE>}</CODE>" in the attribute value.</P> <H3> <P><EM></EM></P>Built-in Properties</H3> <P>NAnt has these built-in properties:</P> <DIV class=Table-Section> <TABLE class=Table> <TBODY> <TR> <TH class=Table-Header>Property</TH> <TH class=Table-Header>Description</TH></TR> <TR> <TD class=Table-Cell>nant.version</TD> <TD class=Table-Cell>The version of NAnt.</TD></TR> <TR> <TD class=Table-Cell>nant.filename</TD> <TD class=Table-Cell>The full path to the NAnt assembly.</TD></TR> <TR> <TD class=Table-Cell>nant.project.basedir</TD> <TD class=Table-Cell>The absolute path of the project's basedir.</TD></TR> <TR> <TD class=Table-Cell>nant.project.buildfile</TD> <TD class=Table-Cell>The absolute path of the buildfile.</TD></TR> <TR> <TD class=Table-Cell>nant.project.name</TD> <TD class=Table-Cell>The name of the project.</TD></TR> <TR> <TD class=Table-Cell>nant.project.default</TD> <TD class=Table-Cell>The name of the project's default target.</TD></TR> <TR> <TD class=Table-Cell>nant.task.*</TD> <TD class=Table-Cell>Each task available to nant has a "true" value, e.g., nant.task.copy</TD></TR></TBODY></TABLE></DIV> <H3>Example</H3> <P>The following build file:</P> <BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"><PRE><?xml version="1.0"?> <project name="Property Test" default="test" basedir="."> <property name="project.name" value="PropertyTest"/> <property name="project.version" value="1.0.0"/> <target name="test"> <echo message="Building ${project.name}-${project.version}"/> </target> </project></PRE></BLOCKQUOTE> <P>Would display this as output:</P> <BLOCKQUOTE dir=ltr style="MARGIN-RIGHT: 0px"><PRE>[echo] Building PropertyTest-1.0.0</PRE></BLOCKQUOTE> <H3>See Also</H3> <UL> <LI> <DIV><A href="../tasks/propertytask.html"><property></A></DIV> <LI> <DIV><A href="../tasks/sysinfotask.html"><sysinfo></A></DIV> <LI> <DIV><A href="../tasks/tstamptask.html"> <DIV><tstamp></DIV></A></DIV></LI></UL> </body> </html> |