|
@@ -67,5 +67,63 @@ |
|
|
this snippet will execute the compile target of /opt/project/build1.xml, |
|
|
this snippet will execute the compile target of /opt/project/build1.xml, |
|
|
setting the basedir to projects1, projects2, projects3 |
|
|
setting the basedir to projects1, projects2, projects3 |
|
|
</p> |
|
|
</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> |
|
|
</section> |
|
|
</external> |
|
|
</external> |