001 <?xml version="1.0" encoding="ISO-8859-1"?> 002 003 <!-- 004 - Copyright 2005-2006 Jens Voß. 005 - 006 - Licensed under the Apache License, Version 2.0 (the "License"); 007 - you may not use this file except in compliance with the License. 008 - You may obtain a copy of the License at 009 - 010 - http://www.apache.org/licenses/LICENSE-2.0 011 - 012 - Unless required by applicable law or agreed to in writing, software 013 - distributed under the License is distributed on an "AS IS" BASIS, 014 - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 - See the License for the specific language governing permissions and 016 - limitations under the License. 017 - 018 --> 019 020 <!--- 021 - This is the main ant build file for the Alster project. 022 --> 023 <project name="Alster" basedir="." default="deploy"> 024 025 <property name="srcdir" value="${basedir}/src"/> 026 <property name="libdir" value="${basedir}/lib"/> 027 <property name="builddir" value="${basedir}/classes"/> 028 <property name="distdir" value="${basedir}/dist"/> 029 <property name="etcdir" value="${basedir}/etc"/> 030 031 <property name="testdir" value="${basedir}/test"/> 032 <property name="testsrcdir" value="${testdir}/src"/> 033 <property name="testbuilddir" value="${testdir}/classes"/> 034 <property name="testresultdir" value="${testdir}/results"/> 035 036 <property name="docdir" value="${basedir}/doc"/> 037 <property name="apidir" value="${docdir}/build/api"/> 038 <property name="xdcdir" value="${docdir}/build/xdc"/> 039 040 <property name="compile.debug" value="true"/> 041 <property file="${etcdir}/buildNumber.properties"/> 042 <property name="version" value="${number.major}.${number.minor}.${number.build}"/> 043 044 <path id="cp"> 045 <fileset dir="${libdir}"> 046 <include name="*.jar"/> 047 </fileset> 048 </path> 049 050 <!--- 051 - The <code>clean</code> target removes all class files and copied 052 - resources from the build directory. 053 --> 054 <target name="clean" description="Delete all generated files"> 055 <mkdir dir="${builddir}"/> 056 <delete includeemptydirs="yes"> 057 <fileset dir="${builddir}" includes="**/*"/> 058 </delete> 059 </target> 060 061 <!--- 062 - This target compiles all Java sources of the Alster project. It also 063 - copies all other resources (like XML files and XSLT stylesheets) from 064 - the source directory to the build directory. 065 --> 066 <target name="compile" description="Compile Nalax classes"> 067 <mkdir dir="${builddir}"/> 068 <javac srcdir="${srcdir}" destdir="${builddir}" debug="${compile.debug}"> 069 <classpath refid="cp"/> 070 </javac> 071 <copy todir="${builddir}" overwrite="yes"> 072 <fileset dir="${srcdir}"> 073 <include name="**/*.xml"/> 074 <include name="**/*.xsl"/> 075 </fileset> 076 </copy> 077 </target> 078 079 <!--- 080 - This target compiles all sources "from scratch". 081 --> 082 <target name="compile-all" 083 description="Compile Alster classes in 'fresh' directory" 084 depends="clean,compile"/> 085 086 <!--- 087 - The <code>jar</code> target combines all class and resource files 088 - from the build directory in a JAR archive. 089 --> 090 <target name="jar" description="Archive class files in a JAR file" depends="compile"> 091 <mkdir dir="${distdir}"/> 092 <delete file="${distdir}/alster.jar"/> 093 <jar destfile="${distdir}/alster.jar"> 094 <fileset dir="${builddir}" includes="**/*.class"/> 095 <fileset dir="${builddir}" includes="**/*.xml"/> 096 <fileset dir="${builddir}" includes="**/*.xsl"/> 097 <manifest> 098 <attribute name="Built-By" value="${user.name}"/> 099 <attribute name="Implementation-Title" value="Alster"/> 100 <attribute name="Implementation-Version" value="${version}"/> 101 <attribute name="Implementation-URL" 102 value="http://alster.sourceforge.net"/> 103 </manifest> 104 </jar> 105 </target> 106 107 108 <!--- 109 - This target compiles everything from scratch and builds a JAR archive 110 - from all class and resource files. 111 --> 112 <target name="deploy" description="Create a build and package from scratch" depends="compile-all, jar"/> 113 114 115 <!-- *********************************************************** --> 116 <!-- *************** targets related to testing *************** --> 117 <!-- *********************************************************** --> 118 119 <!--- 120 - This target cleans all class and result files from the XDC unit tests. 121 --> 122 <target name="clean.test" description="Clean test class directory"> 123 <mkdir dir="${testbuilddir}"/> 124 <delete includeemptydirs="yes"> 125 <fileset dir="${testbuilddir}"> 126 <include name="**/*"/> 127 </fileset> 128 </delete> 129 </target> 130 131 <!--- 132 - This target deletes all previously generated JUnit and Alster test 133 - results. 134 --> 135 <target name="clean.testresults" description="Clean test result directory"> 136 <mkdir dir="${testresultdir}"/> 137 <delete includeemptydirs="yes"> 138 <fileset dir="${testresultdir}"> 139 <include name="**/*"/> 140 </fileset> 141 </delete> 142 </target> 143 144 <!--- 145 - This target is used to compile the JUnit test sources. 146 --> 147 <target name="compile.test" description="Compile the XDC test sources"> 148 <mkdir dir="${testbuilddir}"/> 149 <javac srcdir="${testsrcdir}" destdir="${testbuilddir}" 150 encoding="ISO-8859-1" 151 debug="${compile.debug}"> 152 <classpath> 153 <path refid="cp"/> 154 <pathelement path="${builddir}"/> 155 </classpath> 156 </javac> 157 <copy todir="${testbuilddir}"> 158 <fileset dir="${testsrcdir}"> 159 <include name="**/*.xml"/> 160 <include name="**/*.xsl"/> 161 </fileset> 162 </copy> 163 </target> 164 165 <!--- 166 - This target executes all JUnit tests. 167 --> 168 <target name="junit" description="Run all JUnit tests"> 169 <delete includeemptydirs="yes"> 170 <fileset dir="${testresultdir}"> 171 <include name="**/*"/> 172 </fileset> 173 </delete> 174 <junit fork="yes" printsummary="yes" haltonfailure="no" haltonerror="yes" 175 failureproperty="test.failed"> 176 <classpath> 177 <path refid="cp"/> 178 <pathelement path="${builddir}"/> 179 <pathelement path="${testbuilddir}"/> 180 </classpath> 181 <batchtest todir="${testresultdir}"> 182 <formatter type="plain"/> 183 <fileset dir="${testbuilddir}"> 184 <include name="**/*Test.class"/> 185 </fileset> 186 </batchtest> 187 </junit> 188 <fail if="test.failed" message="Not all JUnit tests passed!"/> 189 </target> 190 191 <!--- 192 - This target executes all Alster tests. 193 --> 194 <target name="alster" description="Run all Alster tests"> 195 <taskdef name="alster" classname="net.sf.alster.AlsterTextTask"> 196 <classpath> 197 <pathelement location="${builddir}"/> 198 </classpath> 199 </taskdef> 200 <alster dir="${testsrcdir}" failonerror="yes" 201 recurse="yes" resultdir="${testresultdir}"> 202 <classpath> 203 <path refid="cp"/> 204 <pathelement location="${builddir}"/> 205 </classpath> 206 </alster> 207 </target> 208 209 <!--- 210 - The <code>test</code> target performs all steps necessary for running 211 - all (JUnit ans Alster) unit tests. 212 --> 213 <target name="test" description="Run all tests" 214 depends="clean.test,clean.testresults,compile.test,junit,alster"/> 215 216 <!-- *********************************************************** --> 217 <!-- ************* targets related to documenting ************* --> 218 <!-- *********************************************************** --> 219 220 <property name="titleText" value="Alster - Unit Testing Framework for XSLT"/> 221 <property name="headerText" value="Alster - v. ${version}"/> 222 223 <!--- 224 - This target deletes all Javadoc generated documentation. 225 --> 226 <target name="clean.javadoc" description="Clean the generated Javadoc documentation"> 227 <mkdir dir="${apidir}"/> 228 <delete includeemptydirs="yes"> 229 <fileset dir="${apidir}"> 230 <include name="**/*"/> 231 </fileset> 232 </delete> 233 </target> 234 235 <!--- 236 - The <code>javadoc</code> target generates Javadoc documentation from the 237 - Java source files of the XDC application. 238 --> 239 <target name="javadoc" description="Generate Javadoc documentation from XDC source Java files"> 240 <mkdir dir="${apidir}"/> 241 <javadoc classpathref="cp" 242 locale="de_DE" 243 encoding="ISO-8859-1" 244 destdir="${apidir}" 245 linksource="yes" 246 windowtitle="${titleText}" 247 doctitle="${titleText}" 248 header="${headerText}" 249 footer="${headerText}"> 250 <packageset dir="${srcdir}" defaultexcludes="yes"/> 251 </javadoc> 252 </target> 253 254 <!--- 255 - This target deletes all XDC generated documentation. 256 --> 257 <target name="clean.xdc" description="Clean the generated XDC documentation"> 258 <mkdir dir="${xdcdir}"/> 259 <delete includeemptydirs="yes"> 260 <fileset dir="${xdcdir}"> 261 <include name="**/*"/> 262 </fileset> 263 </delete> 264 </target> 265 266 <!--- 267 - The <code>xdc</code> target generates XDC documentation from the XML 268 - source files of the XDC application. 269 --> 270 <target name="xdc" 271 description="Generate XDC documentation from Alster source XML files"> 272 <taskdef name="xdc" classname="net.sf.xdc.XdcTask" classpathref="cp"/> 273 <mkdir dir="${xdcdir}"/> 274 <xdc classpathref="cp" 275 sourcepath="${basedir};${srcdir}" 276 destdir="${xdcdir}" 277 subpackages="net.sf.alster" 278 extensions="xsl" 279 notimestamp="no" 280 linksource="yes" 281 defaultexcludes="yes" 282 author="yes" 283 nosince="yes" 284 version="yes" 285 windowtitle="${titleText}" 286 doctitle="${titleText}" 287 header="${headerText}" 288 footer="${headerText}" 289 reportmissing="yes"> 290 <bottom> 291 <![CDATA[<i>Copyright © 2005 - 2006 Jens Voß</i>.]]> 292 </bottom> 293 <arg value="build.xml"/> 294 </xdc> 295 </target> 296 297 <!--- 298 - This target prepares the sources from which the XDC Developers' 299 - Handbook is generated. 300 --> 301 <target name="preprocess.developer" description="Generate material for developers' handbook"> 302 <mkdir dir="${docdir}/generated"/> 303 <mkdir dir="${docdir}/build/developer"/> 304 <xslt in="${basedir}/etc/libraries.xml" 305 style="${docdir}/etc/libraries.xsl" 306 out="${docdir}/generated/libraries.xml" force="yes"> 307 <outputproperty name="method" value="xml"/> 308 <outputproperty name="encoding" value="iso8859_1"/> 309 <outputproperty name="indent" value="yes"/> 310 </xslt> 311 <copy todir="${docdir}/build/developer"> 312 <fileset dir="${libdir}"> 313 <include name="*.txt"/> 314 </fileset> 315 </copy> 316 </target> 317 318 319 <!--- 320 - This target generates the XDC Developers' Handbook. 321 --> 322 <target name="generate.developer" description="Generate developers' handbook" 323 depends="preprocess.developer"> 324 <mkdir dir="${docdir}/build/developer"/> 325 <xslt in="${docdir}/src/developer/developer.xml" 326 style="${docdir}/etc/alsterDoc.xsl" 327 out="${docdir}/build/developer/index.html" force="yes"> 328 <outputproperty name="encoding" value="iso8859_1"/> 329 </xslt> 330 <copy todir="${docdir}/build/developer"> 331 <fileset dir="${docdir}/src/developer"> 332 <include name="*.css"/> 333 <include name="*.gif"/> 334 </fileset> 335 </copy> 336 </target> 337 338 339 <!--- 340 - This target generates the <code>Alster</code> Ant task description. 341 --> 342 <target name="generate.ant" description="Generate Ant task description"> 343 <mkdir dir="${docdir}/build/ant"/> 344 <xslt in="${docdir}/src/ant/AntTask.xml" 345 style="${docdir}/etc/alsterDoc.xsl" 346 out="${docdir}/build/ant/index.html" force="yes"> 347 <outputproperty name="encoding" value="iso8859_1"/> 348 </xslt> 349 </target> 350 351 352 <!--- 353 - The <code>document</code> target performs all build steps to 354 - generate the complete set of XDC documentation. 355 --> 356 <target name="document" description="Generate all documentation" 357 depends="javadoc,xdc,preprocess.developer,generate.developer,generate.ant"> 358 <copy file="${docdir}/src/index.html" todir="${docdir}/build"/> 359 </target> 360 361 362 <!-- *********************************************************** --> 363 <!-- ************* targets related to documenting ************* --> 364 <!-- *********************************************************** --> 365 366 367 <!--- 368 - This target creates a complete source release and creates one 369 - <code>.zip</code> archive and one <code>.tar.gz</code> archive. 370 --> 371 <target name="release-source" description="Create a source release"> 372 <property name="release.name" value="alster-${version}"/> 373 <mkdir dir="${distdir}"/> 374 <zip destfile="${distdir}/${release.name}-src.zip"> 375 <zipfileset prefix="${release.name}" dir="${basedir}"> 376 <include name="*"/> 377 <include name="etc/*"/> 378 <include name="lib/*"/> 379 <include name="src/**/*"/> 380 <include name="test/*"/> 381 </zipfileset> 382 </zip> 383 <tar destfile="${distdir}/${release.name}-src.tar"> 384 <tarfileset prefix="${release.name}" dir="${basedir}"> 385 <include name="*"/> 386 <include name="etc/*"/> 387 <include name="lib/*"/> 388 <include name="src/**/*"/> 389 <include name="test/*"/> 390 </tarfileset> 391 </tar> 392 <gzip src="${distdir}/${release.name}-src.tar" 393 destfile="${distdir}/${release.name}-src.tar.gz"/> 394 <delete file="${distdir}/${release.name}-src.tar"/> 395 </target> 396 397 398 <!--- 399 - This target creates a complete binary release consisting of the 400 - Alster JAR archive as well as all documentation. The contents of the 401 - binary release are included in one <code>.zip</code> archive and one 402 - <code>.tar.gz</code> archive. 403 --> 404 <target name="release-binary" description="Create a binary release" depends="deploy, test, document"> 405 <property name="release.name" value="alster-${version}"/> 406 <mkdir dir="${distdir}"/> 407 <zip destfile="${distdir}/${release.name}.zip"> 408 <zipfileset prefix="${release.name}" dir="${basedir}"> 409 <include name="dist/*.jar"/> 410 <include name="lib/*"/> 411 <include name="doc/**/*"/> 412 </zipfileset> 413 </zip> 414 <tar destfile="${distdir}/${release.name}.tar"> 415 <tarfileset prefix="${release.name}" dir="${basedir}"> 416 <include name="dist/*.jar"/> 417 <include name="lib/*"/> 418 <include name="doc/**/*"/> 419 </tarfileset> 420 </tar> 421 <gzip src="${distdir}/${release.name}.tar" 422 destfile="${distdir}/${release.name}.tar.gz"/> 423 <delete file="${distdir}/${release.name}.tar"/> 424 </target> 425 426 427 <!--- 428 - The <code>release</code> target creates both a source and a binary 429 - release. 430 --> 431 <target name="release" description="Create a complete release" depends="release-source, release-binary"/> 432 433 </project>