| <!-- |
| 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 |
| |
| https://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="style.css"> |
| <title>Props Ant Library</title> |
| </head> |
| |
| <body> |
| <h2>Introduction</h2> |
| |
| <p>This is a library of supplementary handlers for Ant properties resolution.</p> |
| |
| <h2>Requirements</h2> |
| |
| <p>The current version of this antlib is built against the Ant 1.8.0.</p> |
| |
| <h2>Where is it?</h2> |
| |
| <p>The source code for the library lives in the antlibs subspace of Ant's git - |
| <a href="https://gitbox.apache.org/repos/asf?p=ant-antlibs-props.git">https://gitbox.apache.org/repos/asf?p=ant-antlibs-props.git</a>.</p> |
| |
| <h2>Installation</h2> |
| |
| <p>If you are building this from sources, run the antlib target |
| and you'll get a file <code>ant-props.jar</code>.</p> |
| |
| <p>There are several ways to use the tasks:</p> |
| |
| <ul> |
| <li><p>The traditional way: |
| <pre> |
| <typedef resource="org/apache/ant/props/antlib.xml" |
| classpath="YOUR-PATH-TO/ant-props.jar"/> |
| </pre> |
| |
| Using this approach the provided extensions will live in the default namespace.</p> |
| </li> |
| |
| <li><p>Similar, but assigning a namespace URI |
| <pre> |
| <typedef uri="antlib:org.apache.ant.props" |
| resource="org/apache/ant/props/antlib.xml" |
| classpath="YOUR-PATH-TO/ant-props.jar"/> |
| </pre> |
| |
| Placing the properties extensions into their own namespace, usable e.g.: |
| |
| <pre> |
| <project xmlns:props="antlib:org.apache.ant.props"> |
| ... |
| <propertyhelper> |
| <props:nested /> |
| </propertyhelper> |
| </pre> |
| |
| or a variation thereof.</p> |
| </li> |
| |
| <li><p>Using Ant's autodiscovery. Place <code>ant-props.jar</code> |
| into a directory and use <code>ant -lib |
| DIR-CONTAINING-THE-JAR</code> or copy it into |
| <code>ANT_HOME/lib</code> - and then in your build file, simply |
| declare the namespace on the <code>project</code> tag: |
| |
| <pre> |
| <project xmlns:props="antlib:org.apache.ant.props"> |
| </pre> |
| |
| And all tasks of this library will automatically be available |
| in the <code>props</code> namespace without any <code>typedef</code>.</p> |
| </li> |
| </ul> |
| |
| <h2>Tasks and Types</h2> |
| |
| <p>The types provided are instances of |
| <code>org.apache.tools.ant.PropertyHelper.Delegate</code> and can be invoked using the |
| <code><<a href="https://ant.apache.org/manual/CoreTasks/propertyhelper.html">propertyhelper</a>></code> |
| task provided by Ant:</p> |
| |
| <table border="1" cellspacing="0" cellpadding="2" width="100%"> |
| <tr> |
| <th width="15%">Delegate</th> |
| <th width="15%">Delegate Type</th> |
| <th width="70%">Description</th> |
| </tr> |
| <tr> |
| <a name="nested" /> |
| <td align="center">nested</td> |
| <td align="center">PropertyExpander</td> |
| <td>Implements nested property expansion; e.g. <code>${${double-expand-me}}</code>.</td> |
| </tr> |
| <tr> |
| <a name="stringops" /> |
| <td align="center"><a href="stringops.html">stringops</a></td> |
| <td align="center">PropertyEvaluator</td> |
| <td>Implements *nix shell-inspired string operations.</td> |
| </tr> |
| <tr> |
| <a name="types" /> |
| <td align="center">types</td> |
| <td align="center">PropertyEvaluator</td> |
| <td>Given <code><em>type</em>(<em>arg</em>)</code>, attempts to invoke |
| <code><em>type</em></code> constructor <code>(Project, <em>arg</em>)</code>, |
| then <code>(<em>arg</em>)</code>.</td> |
| </tr> |
| <tr> |
| <a name="conditions" /> |
| <td align="center">conditions</td> |
| <td align="center">PropertyEvaluator</td> |
| <td>Given <code><em>condition</em>([<em>arg1=value1</em>,<em>arg2=value2</em>,...])</code>, |
| attempts to invoke an Ant condition of the given name |
| setting the given attibute values and evaluates to either |
| Boolean.TRUE or Boolean.FALSE. Usage looks |
| like <em>${os(family=unix)}</em> / <em>${!os(family=unix)}</em>. |
| Additionally, logical operations are supported. |
| In order of precedence, these are !, &, ^, and |, with + |
| being a secondary alias for & since & is a special character |
| to the XML format. When you want to combine logical operations |
| with typed Ant conditions, the typed conditions should be |
| specified as nested properties and the <a href="#nested">nested |
| evaluator</a> should be included with your active |
| PropertyHelper delegates. |
| This is probably most useful together with the |
| <code>if</code>/<code>unless</code> attributes of tasks or targets. |
| </td> |
| </tr> |
| <tr> |
| <a name="encodeURL" /> |
| <td align="center">encodeURL</td> |
| <td align="center">PropertyEvaluator</td> |
| <td>Given <code>encodeURL:<em>arg</em></code>, attempts to encode <em>arg</em> |
| as a URL per the suggested approach in the javadoc API of <code>java.net.URL</code>. |
| </td> |
| </tr> |
| </table> |
| <hr/> |
| </body> |
| </html> |