Author: jhm Date: Wed Oct 18 00:31:52 2006 New Revision: 465167 URL: http://svn.apache.org/viewvc?view=rev&rev=465167 Log: Add a stylesheet for generating a master buildfile (iterating over all targets) from a common buildfile.
Added: ant/core/trunk/src/etc/common2master.xsl Modified: ant/core/trunk/docs/manual/CoreTasks/subant.html Modified: ant/core/trunk/docs/manual/CoreTasks/subant.html URL: http://svn.apache.org/viewvc/ant/core/trunk/docs/manual/CoreTasks/subant.html?view=diff&rev=465167&r1=465166&r2=465167 ============================================================================== --- ant/core/trunk/docs/manual/CoreTasks/subant.html (original) +++ ant/core/trunk/docs/manual/CoreTasks/subant.html Wed Oct 18 00:31:52 2006 @@ -437,7 +437,7 @@ <td valign="top" align="center">Yes</td> </tr> </table> - <p><em>since Ant 1.7</em>.</p> + <p><em>since Ant 1.7</em>.</p> </blockquote></td></tr> </table> <!-- End Element --> @@ -447,8 +447,8 @@ </table> <!-- End Elements --> - - + + <table border="0" cellspacing="0" cellpadding="2" width="100%"> <tr><td> </td></tr> @@ -459,7 +459,7 @@ <strong>Examples</strong></a></font> </td></tr> - <tr><td><blockquote> + <tr><td><blockquote style=""> <pre> <project name="subant" default="subant1"> <property name="build.dir" value="subant.build"/> @@ -561,7 +561,7 @@ the root buildfile is capable to run the whole build over all modules. </p> - + <pre> <subant failonerror="false"> <fileset dir="." includes="**/build.xml" excludes="build.xml"/> @@ -569,8 +569,18 @@ <target name="build"/> </subant> </pre> - - <p>Does a "clean build" for each subproject.</p> + + <p>Does a "clean build" for each subproject.</p> + <p><b>Hint:</b> because buildfiles are plain xml, you could generate the + masterbuildfile from the common buildfile by using a XSLT transformation: + </p> + + <pre> + <xslt in="common.xml" + out="master.xml" + style="${ant.home}/etc/common2master.xsl" + /> + </pre> <!-- manually written --> @@ -585,4 +595,4 @@ </table> </body> -</html> +</html> \ No newline at end of file Added: ant/core/trunk/src/etc/common2master.xsl URL: http://svn.apache.org/viewvc/ant/core/trunk/src/etc/common2master.xsl?view=auto&rev=465167 ============================================================================== --- ant/core/trunk/src/etc/common2master.xsl (added) +++ ant/core/trunk/src/etc/common2master.xsl Wed Oct 18 00:31:52 2006 @@ -0,0 +1,73 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<!-- + This stylesheet can be used to generate a master buildfile from a common + buildfile (see manual for <subant>). + Foreach <target> in the common buildfile it generates a corresponding + target in the master buildfile for iterating over that target. +--> +<xsl:stylesheet + version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> + +<!-- + 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. +--> + + <xsl:output indent="no" method="text" encoding="ISO-8859-1"/> + <xsl:strip-space elements="*"/> + + +<xsl:template match="/"> + <xsl:apply-templates/> +</xsl:template> + + + +<xsl:template match="project"> +<![CDATA[ +<project name="master"> + + <macrodef name="iterate"> + <attribute name="target"/> + <sequential> + <subant target="@{target}"> + <fileset dir="modules" includes="*/build.xml"/> + </subant> + </sequential> + </macrodef> +]]> + + <xsl:apply-templates/> + +<![CDATA[ +</project> +]]> +</xsl:template> + + +<xsl:template match="target"> + <target name="<xsl:value-of select="@name"/>"<xsl:if test="@description"> description="<xsl:value-of select="@description"/>"</xsl:if>> + <iterate target="<xsl:value-of select="@name"/>"/> + </target> +</xsl:template> + + +<xsl:template match="text()"/> + + + +</xsl:stylesheet> + --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]