You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ant.apache.org by Apache Wiki <wi...@apache.org> on 2007/10/23 13:57:23 UTC
[Ant Wiki] Update of "AntNewbies" by adebowale
Dear Wiki user,
You have subscribed to a wiki page or wiki category on "Ant Wiki" for change notification.
The following page has been changed by adebowale:
http://wiki.apache.org/ant/AntNewbies
------------------------------------------------------------------------------
If you start a ''ant test'' you'll get no error. An ''ant -p'' just prints the ''generateImport'' and ''test'' target. After running a simple ''ant'' or ''ant generateImport'' the final ''ant -p'' will print all your written targets.
+
+ Answer#17 I am having problems with nested elements
+
+ {{{
+
+ <?xml version="1.0" encoding="ISO-8859-1"?>
+ <project name="BuildXmlUtilityTask" basedir="." default="buildXmlUtility">
+
+ <property name="src.dir" value="src"/>
+ <property name="classes.dir" value="classes"/>
+
+ <target name="clean" description="Delete all generated files">
+ <delete dir="${classes.dir}" failonerror="false"/>
+ <delete file="${ant.project.name}.jar"/>
+ </target>
+
+ <target name="compile" description="Compiles the Task">
+ <mkdir dir="${classes.dir}"/>
+ <javac srcdir="${src.dir}" destdir="${classes.dir}"/>
+ </target>
+
+ <target name="jar" description="JARs the Task" depends="compile">
+ <jar destfile="${ant.project.name}.jar" basedir="${classes.dir}"/>
+ </target>
+
+
+ <target name="buildXmlUtility"
+ description="Taskdef the BuildXmlUtitily-Task"
+ depends="jar">
+ <taskdef name="buildUtility"
+ classname="com.corizon.xmlutility.XmlReaderUtility"
+ classpath="${ant.project.name}.jar"/>
+ <buildUtility>
+ <Argument arg = "C:\\project.xml"/>
+ <Argument arg ="/projects/project[1]/@id"/>
+ <Argument arg = "Id17000"/>
+ </buildUtility>
+ </target>
+
+ </project>
+
+
+
+ package com.corizon.xmlutility;
+
+ import java.util.Iterator;
+ import java.util.Vector;
+ import org.apache.tools.ant.Task;
+ import org.apache.tools.ant.BuildException;
+
+
+
+ public class XmlReaderUtility extends Task{
+
+ private static XmlFileReader xmlFileReader;
+ private String filePath;
+ private String xpathExpression;
+ private String value;
+ Vector arguments = new Vector();
+
+
+
+ public void setFilePath(String filePath) {
+ this.filePath = filePath;
+ }
+
+ public void setXpathExpression(String xpathExpression) {
+ this.xpathExpression = xpathExpression;
+ }
+
+ public void setValue(String value) {
+ this.value = value;
+ }
+
+ /** Support for nested text. */
+ public void addArgument(Argument text) {
+ arguments.add(text);
+ }
+
+
+ // The method executing the task
+ public void execute() throws BuildException {
+ int i = 0;
+ // handle nested elements
+ for (Iterator it = arguments.iterator(); it.hasNext(); )
+ {
+ Argument arg = (Argument)it.next();
+ if(i== 0)
+ {
+ setFilePath(arg.getArg());
+ i++;
+ }
+ if(i==1)
+ {
+ setXpathExpression(arg.getArg());
+ i++;
+ }
+ if(i==2)
+ {
+ setValue(arg.getArg());
+ i++;
+ }
+ }
+ xmlFileReader = new XmlFileReader(filePath,xpathExpression,value);
+ }
+
+
+ /** A nested 'argument'. */
+ public class Argument
+ {
+ // Bean constructor
+ public Argument() {}
+
+ /** Argument to pass on. */
+ String arg;
+ public void setArg(String arg) { this.arg = arg; }
+ public String getArg() { return arg; }
+ }
+
+
+ }
+ }}}
+
+ It complains The <buildUtility> type doesn't support the nested "Argument' element
+
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@ant.apache.org
For additional commands, e-mail: dev-help@ant.apache.org