3 <target name="echoUserPropertiesFileFound" if="user.properties.found">
4 <echo>Using properties file ${user.property.file}</echo>
7 <target name="echoUserPropertiesFileNotFound" unless="user.properties.found">
8 <echo>Properties file ${user.property.file} not found, reverting to defaults</echo>
13 <target name="download.dep">
15 <isset property="artifact"/>
17 <echo>Getting dependence ${group}/${artifact}/${version}</echo>
18 <dependencies verbose="true" fileSetId="my.deps">
19 <dependency group="${group}" artifact="${artifact}" version="${version}"/>
21 <copy todir="${download.dir}" flatten="yes">
22 <fileset refid="my.deps"/>
26 <echo>Getting dependence ${group}/${version}</echo>
27 <dependencies verbose="true" fileSetId="my.deps">
28 <dependency group="${group}" version="${version}"/>
30 <copy todir="${download.dir}" flatten="yes">
31 <fileset refid="my.deps"/>
38 <target name="log4j.d">
39 <antcall target="download.dep">
40 <param name="group" value="log4j"/>
41 <param name="version" value="1.2.9"/>
45 <target name="commons-logging.d">
46 <antcall target="download.dep">
47 <param name="group" value="commons-logging"/>
48 <param name="artifact" value="commons-logging"/>
49 <param name="version" value="1.0.2"/>
53 <target name="logging.d" depends="log4j.d,commons-logging.d">
56 <target name="dom4j.d">
57 <antcall target="download.dep">
58 <param name="group" value="dom4j"/>
59 <param name="version" value="1.6"/>
63 <target name="xerces.d">
64 <antcall target="download.dep">
65 <param name="group" value="ehcache"/>
66 <param name="version" value="1.1"/>
70 <target name="ehcache.d">
71 <antcall target="download.dep">
72 <param name="group" value="xerces"/>
73 <param name="version" value="2.4.0"/>
78 <antcall target="download.dep">
79 <param name="group" value="oro"/>
80 <param name="version" value="2.0.6"/>
84 <target name="cglib.d">
85 <antcall target="download.dep">
86 <param name="group" value="cglib"/>
87 <param name="version" value="2.1"/>
91 <target name="hibernate.d" depends="cglib.d,oro.d">
92 <antcall target="download.dep">
93 <param name="group" value="hibernate"/>
94 <param name="version" value="3.0.5"/>
98 <target name="hibernate.standalone.d" depends="hibernate.d">
99 <copy todir="${download.dir}">
100 <fileset dir="${special.lib.dir}/hibernate">
101 <include name="*.jar"/>
106 <target name="spring.d">
107 <antcall target="download.dep">
108 <param name="group" value="springframework"/>
109 <param name="artifact" value="spring"/>
110 <param name="version" value="1.2.5"/>
114 <target name="junit.d">
115 <antcall target="download.dep">
116 <param name="group" value="junit"/>
117 <param name="version" value="3.8.1"/>
119 <copy todir="${download.dir}">
120 <fileset dir="${special.lib.dir}/test">
121 <include name="*.jar"/>
126 <target name="emma.d">
127 <antcall target="download.dep">
128 <param name="group" value="emma"/>
129 <param name="artifact" value="emma"/>
130 <param name="version" value="2.0.5312"/>
132 <antcall target="download.dep">
133 <param name="group" value="emma"/>
134 <param name="artifact" value="emma_ant"/>
135 <param name="version" value="2.0.5312"/>
139 <target name="jmock.d">
140 <antcall target="download.dep">
141 <param name="group" value="jmock"/>
142 <param name="artifact" value="jmock"/>
143 <param name="version" value="1.0.1"/>
145 <antcall target="download.dep">
146 <param name="group" value="jmock"/>
147 <param name="artifact" value="jmock-cglib"/>
148 <param name="version" value="1.0.1"/>
152 <target name="dbunit.d">
153 <antcall target="download.dep">
154 <param name="group" value="dbunit"/>
155 <param name="version" value="2.1"/>
159 <!-- common test dependencies for all test code -->
160 <target name="test.d" depends="junit.d,jmock.d,dbunit.d,emma.d">
165 <target name="import_header" unless="build_header_included">
167 <!-- ========================================================================================
168 Locate user properties to (optionally) override defaults
169 ======================================================================================== -->
172 Give user a chance to override without editing this file
173 (and without typing -D each time they run it).
175 The following properties must be defined in this file:
176 - jcoverage.home: root of the jcoverage installation.
177 - jalopy.home: root of the jalopy installation.
179 <property name="user.property.file" value="${user.home}/wamblee.properties"/>
180 <available file="${user.property.file}" property="user.properties.found"/>
181 <property file="${user.property.file}"/>
183 <antcall target="echoUserPropertiesFileFound"/>
184 <antcall target="echoUserPropertiesFileNotFound"/>
186 <!-- project properties defaults, can be overriden in the user's properties file -->
188 <!-- The project.home property can also be overriden in a build.xml
189 in case the source is in a subdirectory and not necessarily
190 in the top-level directory -->
191 <property name="project.home" value=".."/>
192 <property name="build.dir" value="${project.home}/build"/>
193 <property name="lib.dir" value="${project.home}/lib/wamblee"/>
194 <property name="ant.lib.dir" value="${project.home}/lib/ant"/>
195 <property name="external.lib.dir" value="lib/external"/>
196 <property name="test.lib.dir" value="lib/test"/>
197 <property name="special.lib.dir" value="${project.home}/lib/special"/>
198 <property name="forrest.xdocs.dir" value="${project.home}/site/xdocs"/>
199 <property name="forrest.build.dir" value="${project.home}/site/build"/>
200 <property name="forrest.build.site.dir" value="${forrest.build.dir}/site"/>
201 <property name="build.properties.dir" value="${project.home}" />
202 <property name="build.properties.name" value="build.properties" />
204 <mkdir dir="${external.lib.dir}"/>
205 <mkdir dir="${test.lib.dir}"/>
207 <property name="conf.dir" value="conf"/>
208 <property name="log4j.properties.dir" value="${conf.dir}/properties"/>
210 <!-- Compilation properties -->
211 <property name="javac.debug" value="true"/>
212 <property name="javac.debug.level" value="lines,vars,source"/>
213 <property name="javac.source" value="1.5"/>
215 <!-- ========================================================================================
216 Standard path definitions to be used with all projects
217 ======================================================================================= -->
218 <property name="xmlschemas.dir" value="${conf.dir}/schemas"/>
219 <path id="xmlschemas.path">
220 <pathelement location="${xmlschemas.dir}"/>
223 <!-- ========================================================================================
224 Path definitions for external libraries.
225 ======================================================================================== -->
227 <!-- Ignore system classpath! -->
228 <property name="build.sysclasspath" value="ignore" />
231 <property name="junit.halt.on.failure" value="false"/>
232 <property name="unitreport" value="cl-unit.xml"/>
234 <!-- Hibernate paths -->
235 <!-- name of the file in the source directory containing
236 the names of hibernate files to look at in the correct order -->
237 <property name="hibernate.home" value="${lib.dir}/hibernate-3.0"/>
238 <path id="hibernate.basic.path">
239 <fileset dir="${hibernate.home}">
240 <include name="*.jar"/>
242 <path refid="xerces.path"/>
243 <path refid="dom4j.path"/>
245 <path id="hibernate.appserver.path">
246 <path refid="hibernate.basic.path"/>
247 <fileset dir="${hibernate.home}/appserver">
248 <include name="*.jar"/>
251 <path id="hibernate.standalone.path">
252 <path refid="hibernate.basic.path"/>
253 <fileset dir="${hibernate.home}/standalone">
254 <include name="*.jar"/>
258 <!-- Commented the inclusion of a system-wide path in the user's environment into a
259 classpath. System wide classpaths should not be used. -->
260 <!-- property name="classpath_id" value="build.path" / -->
261 <!-- property name="classpath" refid="${classpath_id}"/ -->
262 <property name="classpath" value=""/>
265 <!-- ========================================================================================
267 ======================================================================================== -->
268 <property name="database" value="Derby"/>
270 <!-- ========================================================================================
272 ======================================================================================== -->
274 <!-- ant-contrib integration -->
275 <property name="ant.contrib.home" value="${ant.lib.dir}/ant-contrib-1.0b2"/>
276 <taskdef resource="net/sf/antcontrib/antlib.xml">
278 <pathelement location="${ant.contrib.home}/ant-contrib.jar" />
282 <!-- taskdef for ant-dependencies task -->
283 <taskdef name="dependencies" classpath="${ant.lib.dir}/ant-dependencies.jar"
284 classname="org.apache.tools.ant.taskdefs.optional.dependencies.Dependencies"/>
286 <!-- Emma integration -->
288 <fileset dir="${test.lib.dir}" includes="emma*.jar"/>
290 <taskdef resource="emma_ant.properties" classpathref="emma.lib" />
291 <property name="emma.enabled" value="false"/>
294 <!-- TMP download this dependence as well
295 <property name="checkstyle.home" value="${lib.dir}/checkstyle-3.5"/>
296 <taskdef resource="checkstyletask.properties"
297 classpath="${checkstyle.home}/checkstyle-all-3.5.jar"/>
298 <property name="checkstyle.rules" value="coding-rules.xml"/>
299 <property name="checkstyle.test.rules" value="coding-rules-test.xml"/>
303 <!-- TMP download this dependence as well
304 <property name="jalopy.home" value="${lib.dir}/jalopy-ant-0.6.2"/>
305 <property name="jalopy.rules" value="${build.dir}/formatting-rules.xml"/>
306 <taskdef name="jalopy"
307 classname="de.hunsicker.jalopy.plugin.ant.AntPlugin">
309 <fileset dir="${jalopy.home}">
310 <include name="*.jar" />
316 <!-- simian integration -->
317 <!-- TMP download this dependence as well
318 <property name="simian.home" value="${lib.dir}/simian"/>
319 <taskdef resource="simiantask.properties" classpath="${simian.home}/simian.jar"/>
322 <!-- macker integration -->
323 <!-- TMP download this dependence as well
324 <property name="macker.home" value="${lib.dir}/macker-0.4.2"/>
325 <path id="macker.path">
326 <fileset dir="${macker.home}">
327 <include name="**/*.jar"/>
330 <taskdef name="macker"
331 classname="net.innig.macker.ant.MackerAntTask"
332 classpathref="macker.path"/>
336 <!-- ========================================================================================
338 ======================================================================================== -->
339 <echo level="debug" message="project.home=${project.home}"/>
340 <echo level="debug" message="project.libs=${project.libs}"/>
341 <echo level="debug" message="classpath=${classpath}"/>
344 <!-- ========================================================================================
346 ======================================================================================== -->
347 <property name="build_header_included" value="true" />
350 <!-- =================================================================
351 Sets up the directory definitions for the module
352 ================================================================= -->
353 <target name="init_directory_properties" depends="import_header">
354 <!-- Set module properties for this build -->
356 <property name="module.home" value="." />
358 <!-- Replace the dash by a / to create a relative directory
359 from a module name -->
360 <propertyregex property="module.reldir"
361 input="${module.name}"
365 defaultValue="${module.name}"/>
366 <property name="module.build.dir"
367 value="${build.dir}/${module.reldir}" />
369 <property name="module.api.forrest.dir" value="${forrest.build.site.dir}/api/${module.name}" />
370 <!-- property name="module.classes.dir" value="${module.build.dir}/bin"/ -->
371 <!-- property name="module.testclasses.dir" value="${module.build.dir}/testbin"/ -->
372 <property name="module.classes.dir" value="bin" />
373 <property name="module.testclasses.dir" value="testbin" />
374 <!-- Directory where generated SQL will be put by the schema export-->
375 <property name="module.sql.dir" value="${module.build.dir}/sql" />
378 <property name="module.jcovclasses.dir"
379 value="${module.build.dir}/testjcov" />
380 <property name="module.jars.dir" value="${module.build.dir}/jars" />
381 <property name="module.jar.file"
382 value="${module.jars.dir}/${module.jar.name}" />
383 <property name="module.source.dir" value="${module.home}/src" />
384 <property name="module.forrest.src.dir" value="${module.home}/xdocs" />
385 <property name="module.ejbsource.dir" value="${module.home}/ejbsrc" />
386 <property name="module.test.dir" value="${module.home}/test" />
387 <property name="module.testjar.name"
388 value="${module.name}-test.jar" />
389 <property name="module.testresourcesjar.name"
390 value="${module.name}-test-resources.jar" />
391 <property name="module.resource.dir"
392 value="${module.home}/resources" />
393 <property name="module.testresource.dir"
394 value="${module.resource.dir}/test" />
395 <property name="module.testoutput.dir"
396 value="${module.resource.dir}/testoutput"/>
397 <property name="module.report.dir"
398 value="${module.build.dir}/testresults" />
399 <property name="module.emmareport.dir"
400 value="${module.report.dir}/html/emma"/>
401 <property name="module.docbase.dir"
402 value="${module.build.dir}/javadoc" />
403 <property name="module.javadoc.dir"
404 value="${module.docbase.dir}/api" />
405 <property name="module.javadocjar.name"
406 value="${module.name}-doc.jar" />
407 <property name="module.testjavadocjar.name"
408 value="${module.name}-test-doc.jar" />
409 <property name="module.testjavadoc.dir"
410 value="${module.docbase.dir}/testapi" />
411 <property name="module.pdfdoc.dir"
412 value="${module.docbase.dir}/pdf" />
413 <property name="module.doccheck.dir"
414 value="${module.docbase.dir}/doccheck" />
415 <property name="module.jar.name" value="${module.name}.jar" />
417 <!-- Replace the dash by a / to create a relative directory
418 from a module name -->
419 <property name="module.dist.dir" value="${lib.dir}/${module.reldir}" />
422 <!-- ============================================================================
423 Initialize the environment for other tasks. Normally, every task which
424 does not depend on any other task should at least depend on init.
425 ============================================================================ -->
427 <target name="help" depends="import_header">
428 <antcall target="help-within-module"/>
429 <antcall target="help-outside-module"/>
432 <target name="help-within-module" depends="init_directory_properties" if="module.name">
433 <antcall target="help-impl"/>
436 <target name="help-outside-module" unless="module.name">
437 <antcall target="help-outside-module-2">
438 <param name="module.name" value="MODULE_NAME"/>
442 <target name="help-outside-module-2" depends="init_directory_properties">
443 <antcall target="help-impl"/>
447 <target name="help-impl">
449 General build targets:
451 clean: Cleans up all build results (excluding the dist location).
452 compile: Compiles all java clasess. Target dir ${module.classes.dir}
453 jar: Creates a jar file. Target: ${module.jar.file}
454 dist: Makes the build results available for other modules Target: ${module.dist.dir}.
455 dist-lite: Similar to dist but only creates the jars for code and test code. Useful
456 during development because it takes much less time than the dist
458 clean-dist: Cleans up the dist directories.
462 test: Compile and run tests.
463 junit-reports: As test but generates a test report. Target: ${module.report.dir}(/html/unit)
464 reports: As junit-reports but also generates an emma test coverage
467 Note: By specifying -Dtest=TestCaseName on the ant command line,
468 only the specified testcase will be run.
470 Emma can also be executed manually:
472 emma: Overwrites the production classes by their instrumented versions.
473 emma-reports: Generates emma code coverage reports after running the
474 testcases with instrumented classes.
478 javadoc: Generates javadoc. Target: ${module.javadoc.dir}
479 doccheck: Checks documentation. Target: ${module.doccheck.dir}
483 checkstyle: Checks the style of the code.
484 format: Formats to the code in accordance with the checkstyle rules.
485 simian: Analyse similarities in the code.
489 For all targets below the database is configured using
490 hibernate.properties (hibernate.dialect property) and
491 the JDBC connection properties in database.properties.
493 The schemaexport and schemaupdate targets require the
494 setting of a property named hibernate.filelist. The value
495 of the property must be the fully qualified class name of
496 a concrete subclass of ConfigFileList which has a default
497 public constructor and defines the Hibernate mapping files that
500 schemaexport: Generate SQL code to create the required database structures.
502 startdb: Startup a lightweight database. The database
503 type to start is obtained from the currently
506 schemaupdate: Populate the database with a schema by running
507 Hibernate schemaupdate against the currently