source: trunk/build.xml @ 1285

Last change on this file since 1285 was 1180, checked in by Nicklas Nordborg, 18 years ago

Added Job and made lots of changes to the ParameterType? and
ParameterValueData? classes

File size: 20.6 KB
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<project
3  name="BASE2"
4  default="core"
5  basedir="."
6  >
7
8  <description>
9    Build file for BASE 2.0
10    Main targets:
11    core (default): build the core
12    nohibernate: build the core, but do not regenerate the Hibernate mappings
13    test: build the test programs
14    web: build the web client
15    migrate: build the migration client
16    javadoc: generate documentation
17    package: create binary distribution
18    all: core, clients, docs
19    clean: clean up everything
20  </description>
21
22  <!-- set global properties for this build -->
23  <property name="compilerarg" value="-Xlint:unchecked" />
24  <property name="base.version" value="pre2.0_demo" />
25  <property name="src" location="src" />
26  <property name="build" location="build" />
27  <property name="dist" location="dist" />
28  <property name="dist.webinf" location="${dist}/www/WEB-INF" />
29  <property name="dist.lib" location="${dist}/www/WEB-INF/lib" />
30  <property name="dist.classes" location="${dist}/www/WEB-INF/classes" />
31  <property name="dist.bin" location="${dist}/bin" />
32  <property name="doc" location="doc" />
33  <property name="lib" location="lib" />
34  <property name="www" location="www" />
35
36  <property name="core.src" location="${src}/core" />
37  <property name="test.src" location="${src}/test" />
38  <property name="web.src" location="${src}/clients/web" />
39  <property name="migrate.src" location="${src}/clients/migrate" />
40  <property name="install.src" location="${src}/install" />
41
42  <property name="core.build" location="${build}/core" />
43  <property name="test.build" location="${build}/test" />
44  <property name="migrate.build" location="${build}/clients/migrate" />
45  <property name="install.build" location="${build}/install" />
46  <property name="web.build" location="${build}/clients/web" />
47  <property name="web.inf" location="${www}/WEB-INF" />
48
49  <property name="doc.develop" location="${doc}/api/develop" />
50  <property name="doc.public" location="${doc}/api/public" />
51
52  <path id="core.compile.classpath">
53    <fileset dir="${lib}/compile">
54      <include name="**/*.jar"/>
55    </fileset>
56  </path>
57
58  <path id="test.compile.classpath">
59    <path refid="core.compile.classpath"/>
60    <pathelement location="${core.build}"/>
61  </path>
62
63  <path id="migrate.compile.classpath">
64    <path refid="core.compile.classpath" />
65    <pathelement location="${core.build}" />
66  </path>
67 
68  <path id="install.compile.classpath">
69    <path refid="core.compile.classpath" />
70    <pathelement location="${core.build}" />
71  </path>
72 
73  <path id="web.compile.classpath">
74    <path refid="core.compile.classpath"/>
75    <pathelement location="${core.build}"/>
76  </path>
77
78  <path id="hibernatedoclet.classpath">
79    <fileset dir="${lib}/hibernatedoclet">
80      <include name="**/*.jar"/>
81    </fileset>
82  </path>
83
84  <taskdef
85    name="hibernatedoclet"
86    classname="xdoclet.modules.hibernate.HibernateDocletTask"
87    classpathref="hibernatedoclet.classpath"
88    description="Task for generating Hibernate mapping files from XDoclet tags"
89  />
90
91  <target
92    name="all"
93    depends="core, test, web, javadoc"
94    description="Compile/create everything"
95  />
96
97  <target
98    name="core"
99    depends="core.compile,core.hibernate"
100    description="Compile the core, generate Hibernate mappings and put everyting in a JAR file"
101  />
102
103  <target
104    name="nohibernate"
105    depends="core.compile"
106    description="Compile the core, assuming Hibernate mappings already exists
107      and put everyting in a JAR file"
108  />
109
110  <target
111    name="core.hibernate"
112    depends="core.compile"
113    description="Generates Hibernate mappings for the core."
114    >
115    <hibernatedoclet
116      destdir="${core.build}"
117      excludedtags="@version,@author,@todo"
118      mergedir="${core.build}"
119      verbose="${xdoclet.verbose}">
120      <fileset dir="${core.src}">
121        <include name="**/*.java"/>
122      </fileset>
123      <hibernate version="2.0"/>
124    </hibernatedoclet>
125   
126    <replace
127      dir="${core.build}"
128      >
129      <include name="**/*.hbm.xml"/>
130      <replacefilter 
131        token="2.0//EN"
132        value="3.0//EN"
133      />
134      <replacefilter 
135        token="2.0.dtd"
136        value="3.0.dtd"
137      />
138      <replacefilter
139        token="outer-join=&#34;false&#34;"
140        value="fetch=&#34;select&#34;"
141      />
142      <replacefilter
143        token="outer-join=&#34;true&#34;"
144        value="fetch=&#34;join&#34;"
145      />
146      <replacefilter
147        token="index-many-to-many"
148        value="map-key-many-to-many"
149      />
150      <replacefilter
151        token="&lt;index&gt;"
152        value="&lt;list-index&gt;"
153      />
154      <replacefilter
155        token="&lt;/index&gt;"
156        value="&lt;/list-index&gt;"
157      />
158      <replacefilter
159        token="composite-index"
160        value="composite-map-key"
161      />
162    </replace>
163  </target>
164
165  <target
166    name="core.compile"
167    depends=""
168    description="compile the core source code"
169    >
170    <mkdir dir="${core.build}"/>
171    <javac
172      encoding="ISO-8859-1"
173      srcdir="${core.src}"
174      destdir="${core.build}"
175      classpathref="core.compile.classpath"
176      debug="true"
177      deprecation="true"
178      >
179      <compilerarg value="${compilerarg}" />
180    </javac>
181    <copy todir="${core.build}">
182      <fileset dir="${core.src}">
183        <include name="**/*.xml" />
184        <include name="**/*.dtd" />
185        <include name="**/*.config" />
186        <include name="**/*.properties" />
187      </fileset>
188    </copy>
189  </target>
190
191  <target
192    name="test"
193    depends="test.compile"
194    description="Compile the test programs"
195  />
196
197  <target name="test.compile"
198    depends=""
199    description="compile the source code for the test programs"
200    >
201    <mkdir dir="${test.build}"/>
202    <javac
203      srcdir="${test.src}"
204      destdir="${test.build}"
205      classpathref="test.compile.classpath"
206      debug="true"
207      deprecation="true"
208      encoding="ISO-8859-1"
209      >
210      <compilerarg value="${compilerarg}" />
211    </javac>
212    <copy todir="${test.build}">
213      <fileset dir="${test.src}">
214        <include name="*.*" />
215        <exclude name="*.java" />
216      </fileset>
217    </copy>
218    <chmod file="${test.build}/run.sh" perm="a+x"/>
219    <copy todir="${test.build}">
220      <fileset dir="${src}">
221        <include name="*.config" />
222        <include name="*.properties" />
223        <include name="*.xml" />
224      </fileset>
225    </copy>
226  </target>
227
228  <!-- add core to depends if used for real -->
229  <target
230    name="migrate"
231    depends="dist.migrate"
232    description="create the Migrate.jar"
233  >
234  </target>
235 
236  <target name="dist.migrate" depends="migrate.compile,dist.init" description="">
237
238    <jar basedir="${migrate.build}" jarfile="${dist.bin}/Migrate.jar" includes="**/*.class">
239    </jar>
240    <copy todir="${dist.bin}" file="${migrate.src}/migrate_from_1.2.sh" />
241    <chmod file="${dist.bin}/migrate_from_1.2.sh" perm="a+x"/>
242    <copy tofile="${dist.classes}/migrate.properties" file="${migrate.src}/migrate.properties.in" />
243    <chmod file="${dist.classes}/migrate.properties" perm="600"/>
244
245  </target>
246
247  <target name="migrate.properties" if="migrate.newproperties">
248    <copy tofile="${migrate.build}/migrate.properties" file="${migrate.src}/migrate.properties.in" />
249    <chmod file="${migrate.build}/migrate.properties" perm="600"/>
250  </target>
251
252  <target name="migrate.compile" description="compile the source code for the migration program">
253
254    <mkdir dir="${migrate.build}" />
255    <javac
256      encoding="ISO-8859-1"
257      srcdir="${migrate.src}"
258      destdir="${migrate.build}"
259      classpathref="migrate.compile.classpath"
260      debug="true"
261      >
262      <compilerarg value="${compilerarg}" />
263    </javac>
264    <copy todir="${migrate.build}">
265      <fileset dir="${src}">
266        <include name="*.config" />
267        <include name="*.properties" />
268        <include name="*.xml" />
269      </fileset>
270    </copy>
271    <copy todir="${migrate.build}" file="${migrate.src}/migrate_from_1.2.sh" />
272    <chmod file="${migrate.build}/migrate_from_1.2.sh" perm="a+x"/>
273    <condition property="migrate.newproperties">
274      <not>
275        <available file="${migrate.build}/migrate.properties"/>
276      </not>
277    </condition>
278    <antcall target="migrate.properties"/>
279
280  </target>
281
282  <target
283    name="install"
284    depends="install.compile"
285    description="Compile the installation program"
286  >
287  </target>
288
289  <target name="install.compile"
290    description="compile the source code for the installation program"
291    >
292    <mkdir dir="${install.build}" />
293    <javac
294      encoding="ISO-8859-1"
295      srcdir="${install.src}"
296      destdir="${install.build}"
297      classpathref="install.compile.classpath"
298      debug="true"
299      deprecation="true"
300      >
301      <compilerarg value="${compilerarg}" />
302    </javac>
303  </target>
304
305  <target
306    name="web"
307    depends="web.compile"
308    description="Compile the web client, and copy required files to the web-inf directory"
309  >
310    <mkdir dir="${web.inf}/lib"/>
311    <mkdir dir="${web.inf}/classes"/>
312    <jar
313      basedir="${core.build}"
314      jarfile="${web.inf}/lib/BASE2Core.jar"
315    />
316    <jar
317      basedir="${web.build}"
318      jarfile="${web.inf}/lib/BASE2Webclient.jar"
319    />
320    <copy todir="${web.inf}/lib">
321      <fileset dir="${lib}/compile">
322        <include name="**/*.jar"/>
323        <exclude name="**/servlet-api.jar" />
324        <exclude name="**/jsp-api.jar" />
325      </fileset>
326      <fileset dir="${lib}/dist">
327        <include name="**/*.jar"/>
328      </fileset>
329    </copy>
330    <copy todir="${web.inf}/classes">
331      <fileset dir="${src}">
332        <include name="*.config"/>
333        <include name="*.properties"/>
334        <include name="*.xml"/>
335      </fileset>
336    </copy>
337  </target>
338
339  <target
340    name="web.compile"
341    depends=""
342    description="compile the source code for the web client"
343    >
344    <mkdir dir="${web.build}"/>
345    <javac
346      encoding="ISO-8859-1"
347      srcdir="${web.src}"
348      destdir="${web.build}"
349      classpathref="web.compile.classpath"
350      debug="true"
351      deprecation="true"
352      >
353      <compilerarg value="${compilerarg}" />
354    </javac>
355    <copy todir="${web.build}">
356      <fileset dir="${web.src}">
357        <include name="**/*.xml" />
358        <include name="**/*.dtd" />
359        <include name="**/*.config" />
360        <include name="**/*.properties" />
361      </fileset>
362    </copy>
363  </target>
364
365  <target
366    name="dist"
367    depends="clean,dist.init,dist.core,dist.install,dist.web,dist.doc"
368    description="Create the distribution and put all files in their correct places">
369    <copy todir="${dist.lib}">
370      <fileset dir="${lib}/compile">
371        <include name="**/*.jar"/>
372        <exclude name="**/*jai*.jar" />
373        <exclude name="**/servlet-api.jar" />
374        <exclude name="**/jsp-api.jar" />
375      </fileset>
376      <fileset dir="${lib}/dist">
377        <include name="**/*.jar"/>
378      </fileset>
379    </copy>
380    <copy tofile="${dist.webinf}/web.xml" file="${src}/web.xml.in" />
381    <copy tofile="${dist.classes}/base.config" file="${src}/base.config.in" />
382    <chmod file="${dist.classes}/base.config" perm="600"/>
383    <copy todir="${dist.classes}" file="${src}/hibernate.properties" />
384    <copy todir="${dist.classes}" file="${src}/log4j.properties" />
385  </target>
386
387  <target
388    name="dist.init"
389    description="Create the distribution directory structure"
390    >
391    <mkdir dir="${dist}"/>
392    <mkdir dir="${dist.bin}"/>
393    <mkdir dir="${dist}/doc"/>
394    <mkdir dir="${dist}/www"/>
395    <mkdir dir="${dist.lib}"/>
396  </target>
397
398  <target
399    name="dist.core"
400    depends="core.compile,core.hibernate"
401    description="Generate the core jar file: BASE2Core.jar"
402    >
403    <jar
404      basedir="${core.build}"
405      jarfile="${dist.lib}/BASE2Core.jar"
406    />
407  </target>
408  <target
409    name="dist.install"
410    depends="install.compile"
411    description="Generate the installation jar file: BASE2Install.jar"
412    >
413    <jar
414      basedir="${install.build}"
415      jarfile="${dist.bin}/BASE2Install.jar"
416    />
417    <copy todir="${dist.bin}" file="${install.src}/initdb.sh" />
418    <copy todir="${dist.bin}" file="${install.src}/includes" />
419    <copy todir="${dist.bin}" file="${install.src}/initdb.bat" />
420    <chmod file="${dist.bin}/initdb.sh" perm="a+x"/>
421  </target>
422  <target
423    name="dist.web"
424    depends="web"
425    description="Generate the web jar file: BASE2Webclient.jar
426      and copy all *.jsp files"
427    >
428    <jar
429      basedir="${web.build}"
430      jarfile="${dist.lib}/BASE2Webclient.jar"
431    />
432    <copy
433      todir="${dist}/www"
434      >
435      <fileset dir="${www}">
436        <include name="**/*"/>
437        <exclude name="**/*.jar" />
438      </fileset>
439    </copy>
440  </target>
441 
442  <target
443    name="dist.doc"
444    depends=""
445    description="Copy required documentation"
446    >
447<!--
448    <copy todir="${dist}" file="${doc}/installation.txt" />
449    <copy todir="${dist}" file="base2.license.txt" />
450    <copy todir="${dist}/doc" file="${doc}/3rd-party-components.txt" />
451    <copy todir="${dist}/doc" file="${doc}/Hibernate_modifications.txt" />
452    <copy todir="${dist}/doc/licenses">
453      <fileset dir="${doc}/licenses" />
454    </copy>
455-->
456  </target>
457 
458  <target
459    name="package"
460    depends="dist"
461    description="Package the distribution"
462    >
463    <tar
464      destfile="base-${base.version}.tar.gz"
465      compression="gzip"
466      >
467      <tarfileset
468        dir="${dist}"
469        prefix="base-${base.version}"
470        preserveLeadingSlashes="true"
471      />
472    </tar>
473    <checksum
474      file="base-${base.version}.tar.gz"
475    />
476  </target>
477
478  <target
479    name="clean"
480    description="Remove all generated files and backup files" >
481    <delete dir="${build}"/>
482    <delete dir="${dist}"/>
483    <delete dir="${web.inf}/lib"/>
484    <delete dir="${web.inf}/classes"/>
485    <delete>
486      <fileset dir="." includes="**/base-*.tar.gz*" defaultexcludes="no"/>
487      <fileset dir="." includes="**/*~" defaultexcludes="no"/>
488      <fileset dir="." includes="**/.#*" defaultexcludes="no"/>
489    </delete>
490  </target>
491
492  <target name="uml"
493    description="generate uml for core package using UmlGraph" >
494    <javadoc
495      packagenames="net.sf.basedb.*"
496      sourcepath="${core.src}"
497      >
498      <doclet name="UmlGraph" path="${lib}/umldoclet/UmlGraph.jar">
499        <param name="-hide" value="java.lang.Exception"/>
500      </doclet>
501    </javadoc>
502    <apply executable="dot">
503      <arg value="-Tps"/>
504      <arg value="-o${doc}/core.ps"/>
505      <fileset file="graph.dot"/>
506    </apply>
507  </target>
508
509  <target
510    name="javadoc"
511    depends="javadoc.develop,javadoc.public"
512  />
513
514  <target
515    name="javadoc.develop"
516    description="generate JavaDoc for developers of BASE, ie. include private and protecteed methods.">
517    <!-- Create the time stamp -->
518    <tstamp>
519      <format property="TODAY" pattern="yyyy-MM-dd"/>
520    </tstamp>
521    <mkdir dir="${doc}"/>
522
523    <javadoc
524      packagenames="net.sf.basedb.*"
525      sourcepath="${core.src}:${web.src}:${migrate.src}"
526      destdir="${doc.develop}"
527      author="true"
528      version="true"
529      use="true"
530      private="true"
531      windowtitle="BASE 2.0 Class documentation (developer edition)"
532      stylesheetfile="${doc}/javadoc.css"
533      classpathref="core.compile.classpath"
534      linksource="yes"
535      breakiterator="yes"
536      encoding="iso-8859-1"
537      >
538      <header><![CDATA[Last update: ${TODAY}]]></header>
539      <link href="http://java.sun.com/j2se/1.5/docs/api"/>
540      <link href="http://www.hibernate.org/hib_docs/v3/api"/>
541      <link href="http://www.jdom.org/docs/apidocs/" />
542      <link href="http://java.sun.com/products/servlet/2.2/javadoc/" />
543      <tag name="base.internal" description="Developer info" />
544      <tag name="base.modified" description="Last modified" />
545      <tag name="hibernate.class" description="Hibernate: class" scope="types" />
546      <tag name="hibernate.subclass" description="Hibernate: subclass" scope="types" />
547      <tag name="hibernate.discriminator" description="Hibernate: discriminator" scope="types" />
548      <tag name="hibernate.id" description="Hibernate: id" scope="methods" />
549      <tag name="hibernate.generator-param" description="Hibernate: generator-param" scope="methods" />
550      <tag name="hibernate.version" description="Hibernate: version" scope="methods" />
551      <tag name="hibernate.property" description="Hibernate: property" scope="methods" />
552      <tag name="hibernate.column" description="Hibernate: column" scope="methods" />
553      <tag name="hibernate.map" description="Hibernate: map" scope="methods" />
554      <tag name="hibernate.set" description="Hibernate: set" scope="methods" />
555      <tag name="hibernate.list" description="Hibernate: list" scope="methods" />
556      <tag name="hibernate.array" description="Hibernate: array" scope="methods" />
557      <tag name="hibernate.one-to-one" description="Hibernate: one-to-one" scope="methods" />
558      <tag name="hibernate.many-to-one" description="Hibernate: many-to-one" scope="methods" />
559      <tag name="hibernate.many-to-many" description="Hibernate: many-to-many" scope="methods" />
560      <tag name="hibernate.index-many-to-many" description="Hibernate: index-many-to-many" scope="methods" />
561      <tag name="hibernate.collection-key" description="Hibernate: collection-key" scope="methods" />
562      <tag name="hibernate.collection-index" description="Hibernate: collection-index" scope="methods" />
563      <tag name="hibernate.collection-composite-index" description="Hibernate: collection-composite-index" scope="methods" />
564      <tag name="hibernate.collection-element" description="Hibernate: collection-element" scope="methods" />
565      <tag name="hibernate.collection-composite-element" description="Hibernate: collection-composite-element" scope="methods" />
566      <tag name="hibernate.collection-one-to-many" description="Hibernate: collection-one-to-many" scope="methods" />
567      <tag name="hibernate.collection-many-to-many" description="Hibernate: collection-many-to-many" scope="methods" />
568      <tag name="hibernate.bag" description="Hibernate: bag" scope="methods" />
569      <tag name="hibernate.many-to-any" description="Hibernate: many-to-any" scope="methods" />
570      <tag name="hibernate.many-to-any-column" description="Hibernate: many-to-any-column" scope="methods" />
571    </javadoc>
572  </target>
573
574  <target
575    name="javadoc.public"
576    description="generate public JavaDoc, ie. without private and protected methods">
577    <tstamp>
578      <format property="TODAY" pattern="yyyy-MM-dd"/>
579    </tstamp>
580    <mkdir dir="${doc}"/>
581    <javadoc
582      packagenames="net.sf.basedb.*"
583      sourcepath="${core.src}:${web.src}"
584      destdir="${doc.public}"
585      author="true"
586      version="true"
587      protected="true"
588      windowtitle="BASE 2.0 Class documentation"
589      stylesheetfile="${doc}/javadoc.css"
590      classpathref="core.compile.classpath"
591      breakiterator="yes"
592      encoding="iso-8859-1"
593      >
594      <header><![CDATA[Last update: ${TODAY}]]></header>
595      <link href="http://java.sun.com/j2se/1.5/docs/api"/>
596      <link href="http://www.hibernate.org/hib_docs/v3/api"/>
597      <link href="http://www.jdom.org/docs/apidocs/" />
598      <link href="http://java.sun.com/products/servlet/2.2/javadoc/" />
599      <tag name="base.internal" description="Developer info" enabled="false" />
600      <tag name="base.modified" description="Last modified" enabled="false" />
601      <tag name="hibernate.class" description="Hibernate: class" scope="types" enabled="false" />
602      <tag name="hibernate.subclass" description="Hibernate: subclass" scope="types" enabled="false" />
603      <tag name="hibernate.discriminator" description="Hibernate: discriminator" scope="types" enabled="false" />
604      <tag name="hibernate.id" description="Hibernate: id" scope="methods" enabled="false" />
605      <tag name="hibernate.generator-param" description="Hibernate: generator-param" scope="methods" enabled="false" />
606      <tag name="hibernate.version" description="Hibernate: version" scope="methods" enabled="false" />
607      <tag name="hibernate.property" description="Hibernate: property" scope="methods" enabled="false" />
608      <tag name="hibernate.key-property" description="Hibernate: key-property" scope="methods" enabled="false" />
609      <tag name="hibernate.column" description="Hibernate: column" scope="methods" />
610      <tag name="hibernate.map" description="Hibernate: map" scope="methods" enabled="false" />
611      <tag name="hibernate.set" description="Hibernate: set" scope="methods" enabled="false" />
612      <tag name="hibernate.list" description="Hibernate: list" scope="methods" enabled="false" />
613      <tag name="hibernate.array" description="Hibernate: array" scope="methods" enabled="false" />
614      <tag name="hibernate.one-to-one" description="Hibernate: one-to-one" scope="methods" enabled="false" />
615      <tag name="hibernate.many-to-one" description="Hibernate: many-to-one" scope="methods" enabled="false" />
616      <tag name="hibernate.many-to-many" description="Hibernate: many-to-many" scope="methods" enabled="false" />
617      <tag name="hibernate.index-many-to-many" description="Hibernate: index-many-to-many" scope="methods" enabled="false" />
618      <tag name="hibernate.collection-key" description="Hibernate: collection-key" scope="methods" enabled="false" />
619      <tag name="hibernate.collection-index" description="Hibernate: collection-index" scope="methods" enabled="false" />
620      <tag name="hibernate.collection-composite-index" description="Hibernate: collection-composite-index" scope="methods" enabled="false" />
621      <tag name="hibernate.collection-element" description="Hibernate: collection-element" scope="methods" enabled="false" />
622      <tag name="hibernate.collection-composite-element" description="Hibernate: collection-composite-element" scope="methods" enabled="false" />
623      <tag name="hibernate.collection-one-to-many" description="Hibernate: collection-one-to-many" scope="methods" enabled="false" />
624      <tag name="hibernate.collection-many-to-many" description="Hibernate: collection-many-to-many" scope="methods" enabled="false" />
625      <tag name="hibernate.bag" description="Hibernate: bag" scope="methods" enabled="false" />
626      <tag name="hibernate.many-to-any" description="Hibernate: many-to-any" scope="methods" enabled="false" />
627      <tag name="hibernate.many-to-any-column" description="Hibernate: many-to-any-column" scope="methods" enabled="false" />
628    </javadoc>
629  </target>
630
631
632</project>
Note: See TracBrowser for help on using the repository browser.