jhm 2004/09/06 22:59:37
Modified: proposal/xdocs/src/org/apache/tools/ant/taskdefs SubAnt.xml
Log:
Integrate <subant> complex example into mergefile.
Revision Changes Path
1.10 +58 -0
ant/proposal/xdocs/src/org/apache/tools/ant/taskdefs/SubAnt.xml
Index: SubAnt.xml
===================================================================
RCS file:
/home/cvs/ant/proposal/xdocs/src/org/apache/tools/ant/taskdefs/SubAnt.xml,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- SubAnt.xml 9 Feb 2004 21:29:18 -0000 1.9
+++ SubAnt.xml 7 Sep 2004 05:59:37 -0000 1.10
@@ -67,5 +67,63 @@
this snippet will execute the compile target of
/opt/project/build1.xml,
setting the basedir to projects1, projects2, projects3
</p>
+ <p>Now a little more complex - but useful - scenario. Assume that we
have
+ a directory structure like this:</p>
+ <pre>
+ root
+ | common.xml
+ | build.xml
+ |
+ +-- modules
+ +-- modA
+ | +-- src
+ +-- modB
+ +-- src
+
+ <u><b>common.xml:</b></u><br/>
+ <project>
+ <property name="src.dir" value="src"/>
+ <property name="build.dir" value="build"/>
+ <property name="classes.dir"
value="${build.dir}/classes"/>
+
+ <target name="compile">
+ <mkdir dir="${classes.dir}"/>
+ <javac srcdir="${src.dir}" destdir="${classes.dir}"/>
+ </target>
+
+ <!-- more targets -->
+ </project>
+
+ <u><b>build.xml:</b></u><br/>
+ <project>
+
+ <macrodef name="iterate">
+ <attribute name="target"/>
+ <sequential>
+ <subant target="@{target}">
+ <fileset dir="modules" includes="*/build.xml"/>
+ </subant>
+ </sequential>
+ </macrodef>
+
+
+ <target name="compile">
+ <iterate target="compile"/>
+ </target>
+
+ <!-- more targets -->
+ </project>
+
+ <u><b>modules/modA/build.xml:</b></u><br/>
+ <project name="modA">
+ <import file="../../common.xml"/>
+ </project>
+ </pre>
+
+ <p>This results in very small buildfiles in the modules, maintainable
+ buildfile (common.xml) and a clear project structure. Additionally
+ the root buildfile is capable to run the whole build over all
+ modules.
+ </p>
</section>
</external>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]