diff options
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/manual/Tasks/presetdef.html')
-rw-r--r-- | framework/src/ant/apache-ant-1.9.6/manual/Tasks/presetdef.html | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/manual/Tasks/presetdef.html b/framework/src/ant/apache-ant-1.9.6/manual/Tasks/presetdef.html new file mode 100644 index 00000000..c7f381c0 --- /dev/null +++ b/framework/src/ant/apache-ant-1.9.6/manual/Tasks/presetdef.html @@ -0,0 +1,184 @@ +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<html> + + <head> + <meta http-equiv="Content-Language" content="en-us"></meta> + <link rel="stylesheet" type="text/css" href="../stylesheets/style.css"> +<title>PreSetDef Task</title> + <style type="text/css"> + <!-- + .code { background: #EFEFEF; margin-top: } + --> + </style> + </head> + + <body> + + <h2><a name="presetdef">PreSetDef</a></h2> + <h3>Description</h3> + <p> + The preset definition generates a new definition + based on a current definition with some attributes + or elements preset. + </p> + <p> + <em>since Apache Ant 1.6</em> + </p> + <p> + The resolution of properties in any of the attributes or + nested text takes place with the definition is used and <em>not</em> + when the preset definition is defined. + </p> + <h3>Parameters</h3> + <table border="1" cellpadding="2" cellspacing="0"> + <tr> + <td valign="top"><b>Attribute</b></td> + <td valign="top"><b>Description</b></td> + <td align="center" valign="top"><b>Required</b></td> + </tr> + <tr> + <td valign="top">name</td> + <td valign="top">the name of the new definition</td> + <td valign="top" align="center">Yes</td> + </tr> + <tr> + <td valign="top">uri</td> + <td valign="top"> + The uri that this definition should live in. + </td> + <td valign="top" align="center">No</td> + </tr> + </table> + <h3>Parameters specified as nested elements</h3> + <h4>another type with attributes or elements set</h4> + <p>The <code><presetdef></code> task takes one nested element as a parameter. + This nested element can be any other type or task. The attributes + and elements that need to be preset are placed here. + </p> + + <h3>Examples</h3> + The following fragment defines a javac task with the debug, deprecation + srcdir and destdir + attributes set. It also has a src element to source files from a generated + directory. + <blockquote> +<pre class="code"> +<presetdef name="my.javac"> + <javac debug="${debug}" deprecation="${deprecation}" + srcdir="${src.dir}" destdir="${classes.dir}"> + <src path="${gen.dir}"/> + </javac> +</presetdef> +</pre> + </blockquote> + This can be used as a normal javac task - example: + <blockquote> +<pre class="code"> +<my.javac/> +</pre> + </blockquote> + The attributes specified in the preset task may be overridden - i.e. + they may be seen as optional attributes - example: + <blockquote> +<pre class="code"> +<my.javac srcdir="${test.src}" deprecation="no"/> +</pre> + </blockquote> + One may put a presetdef definition in an antlib. + For example suppose the jar file antgoodies.jar has + the antlib.xml as follows: + <blockquote> +<pre class="code"> +<antlib> + <taskdef resource="com/acme/antgoodies/tasks.properties"/> + <!-- Implement the common use of the javac command --> + <presetdef name="javac"> + <javac deprecation="${deprecation}" debug="${debug}" + srcdir="src" destdir="classes"/> + </presetdef> +</antlib> +</pre> + </blockquote> + One may then use this in a build file as follows: + <blockquote> +<pre class="code"> +<project default="example" xmlns:antgoodies="antlib:com.acme.antgoodies"> + <target name="example"> + <!-- Compile source --> + <antgoodies:javac srcdir="src/main"/> + <!-- Compile test code --> + <antgoodies:javac srcdir="src/test"/> + </target> +</project> +</pre> + </blockquote> + <p> + The following is an example of evaluation of properties when the + definition is used: + </p> + <blockquote> +<pre class="code"> +<target name="defineandcall"> + <presetdef name="showmessage"> + <echo>message is '${message}'</echo> + </presetdef> + <showmessage/> + <property name="message" value="Message 1"/> + <showmessage/> + <antcall target="called"> + <param name="message" value="Message 2"/> + </antcall> +</target> +<target name="called"> + <showmessage/> +</target> +</pre> + </blockquote> + <p> + The command ant defineandcall results in the output: + </p> + <blockquote> +<pre class="code"> +defineandcall: +[showmessage] message is '${message}' +[showmessage] message is 'Message 1' + +called: +[showmessage] message is 'Message 2' +</pre> + </blockquote> +<p> +It is possible to use a trick to evaluate properties when the definition is +<em>made</em> rather than used. This can be useful if you do not expect some +properties to be available in child builds run with +<code><ant ... inheritall="false"></code>: +</p> +<blockquote><pre class="code"> +<macrodef name="showmessage-presetdef"> + <attribute name="messageval"/> + <presetdef name="showmessage"> + <echo>message is '@{messageval}'</echo> + </presetdef> +</macrodef> +<showmessage-presetdef messageval="${message}"/> +</pre></blockquote> + <hr></hr> + + </body> +</html> + |