root/trunk/build/buildTools/deftasks.xml

Revision 3485 (checked in by douglm, 1 year ago)

Add definitions for the new ant dependency tasks

Line 
1 <!-- Define a number of tasks and macros
2      deftasks:  define someuseful build tasks
3      projectDefs: standard project definitions
4      xMsg: x=info,debug etc. For message output
5
6      Authors: Mike Douglass   douglm rpi.edu
7 -->
8
9 <project name="doDeftasks" basedir="." default="">
10   <macrodef name="deftasks">
11     <sequential>
12       <property name="build.dir" location="${bedework.home}/build"/>
13
14       <path id="build.cp">
15         <fileset dir="${build.dir}">
16           <include name="*.jar"/>
17         </fileset>
18       </path>
19
20       <taskdef name="applicationXml"
21                classname="org.bedework.deployment.ApplicationXmlTask">
22         <classpath refid="build.cp"/>
23       </taskdef>
24
25       <taskdef name="artifactId"
26                classname="org.bedework.deployment.ArtifactIdTask">
27         <classpath refid="build.cp"/>
28       </taskdef>
29
30       <taskdef name="dependencies"
31                classname="org.bedework.deployment.DependenciesTask">
32         <classpath refid="build.cp"/>
33       </taskdef>
34
35       <taskdef name="dependency"
36                classname="org.bedework.deployment.DependencyTask">
37         <classpath refid="build.cp"/>
38       </taskdef>
39          
40       <taskdef name="forApp"
41                classname="org.bedework.deployment.ForAppTask">
42         <classpath refid="build.cp"/>
43       </taskdef>
44  
45       <taskdef name="forEachApp"
46                classname="org.bedework.deployment.ForEachAppTask">
47         <classpath refid="build.cp"/>
48       </taskdef>
49
50       <taskdef name="groupId"
51                classname="org.bedework.deployment.GroupIdTask">
52         <classpath refid="build.cp"/>
53       </taskdef>
54
55       <taskdef name="license"
56                classname="org.bedework.deployment.LicenseTask">
57         <classpath refid="build.cp"/>
58       </taskdef>
59
60       <taskdef name="makeLangXsl"
61                classname="org.bedework.deployment.MakeLangXsl">
62         <classpath refid="build.cp"/>
63       </taskdef>
64
65       <taskdef name="optional"
66                classname="org.bedework.deployment.OptionalTask">
67         <classpath refid="build.cp"/>
68       </taskdef>
69
70       <taskdef name="resolveFile"
71                classname="org.bedework.deployment.ResolveFile">
72         <classpath refid="build.cp"/>
73       </taskdef>
74
75       <taskdef name="scope"
76                classname="org.bedework.deployment.ScopeTask">
77         <classpath refid="build.cp"/>
78       </taskdef>
79
80       <taskdef name="type"
81                classname="org.bedework.deployment.TypeTask">
82         <classpath refid="build.cp"/>
83       </taskdef>
84
85       <taskdef name="version"
86                classname="org.bedework.deployment.VersionTask">
87         <classpath refid="build.cp"/>
88       </taskdef>
89     </sequential>
90   </macrodef>
91  
92   <macrodef name="execProject">
93     <attribute name="project"/>
94     <attribute name="target"/>
95     <sequential>
96       <ant antfile="${bedework.home}/../@{project}/build.xml"
97            inheritall="false"
98            target="@{target}" />
99     </sequential>
100   </macrodef>
101    
102   <macrodef name="buildfilters">
103     <sequential>
104       <filterset id="property.filters" >
105         <!--      Global settings            -->
106         <filter token="QUICKSTART_DIR"
107                 value="${quickstart.dir}"/>
108
109         <filter token="APPSERVER-DATA-DIR"
110                 value="${org.bedework.data.dir}"/>
111        
112         <filter token="DATA_DIR"
113                 value="${org.bedework.data.dir}"/>
114
115         <filter token="BW-APP-NAME"
116                 value="${org.bedework.deploy.name}"/>
117
118         <filter token="HIBERNATE-DIALECT"
119                 value="${org.bedework.global.hibernate.dialect}" />
120
121         <filter token="SECOND-LEVEL-CACHING"
122                 value="${org.bedework.global.hibernate.cache.use_second_level_cache}" />
123
124         <filter token="CACHE-PROVIDER"
125                 value="${org.bedework.global.hibernate.cache.provider_class}" />
126
127         <filter token="DIRECTORY-BROWSING-DISALLOWED"
128                 value="${org.bedework.global.directory.browsing.disallowed}" />
129
130         <filter token="SERVLET-CLASS"
131                 value="${org.bedework.global.servlet.class}"/>
132
133         <filter token="PORTLET-SERVLET-CLASS"
134                 value="${org.bedework.global.portlet-servlet.class}"/>
135
136         <filter token="PORTAL-SERVLET-CONTEXT-PROVIDER"
137                 value="${org.bedework.global.portal-servlet.context.provider}"/>
138
139         <filter token="PORTAL-SERVLET-CONTEXT-LISTENER"
140                 value="${org.bedework.global.portal-servlet.context.listener}"/>
141
142         <filter token="PORTLET-CLASS"
143                 value="${org.bedework.global.portlet.class}"/>
144
145         <filter token="IGNORE-CONTENT-TYPE"
146                 value="${org.bedework.global.ignoreContentType}" />
147
148         <filter token="GENURL-TAGLIB-TLD"
149                 value="${org.bedework.global.genurl.taglib.tld}"/>
150
151         <filter token="LIFERAY-COMPANY-ID"
152                 value="${org.bedework.global.liferay.company-id}"/>
153
154         <filter token="JBOSS-CARDDB-DATASOURCE"
155                 value="${org.bedework.global.jboss.carddb.datasource.jndiname}"/>
156
157         <filter token="JBOSS-DB-DATASOURCE"
158                 value="${org.bedework.global.jboss.db.datasource.jndiname}"/>
159
160         <!--      Application settings            -->
161
162         <filter token="APP-DESCRIPTION"
163                 value="${propval.app.description}" />
164
165         <filter token="PORTLET-NAME"
166                 value="${propval.app.portlet.name}"/>
167
168         <filter token="CAL-SUITE"
169                 value="${propval.app.cal.suite}"/>
170
171         <filter token="SECURITY-DOMAIN"
172                 value="${propval.app.security.domain}"/>
173         <filter token="SECURITY-PREFIX"
174                 value="${propval.app.security.prefix}"/>
175         <filter token="TRANSPORT-GUARANTEE"
176                 value="${propval.app.transport.guarantee}"/>
177
178         <filter token="DISPLAY-NAME"
179                 value="${propval.app.display.name}"/>
180         <filter token="CONTEXT-ROOT"
181                 value="${propval.app.context.root}" />
182         <filter token="APP-NAME"
183                 value="${propval.app.name}"/>
184         <filter token="APP-DESCRIPTION"
185                 value="${propval.app.description}"/>
186         <filter token="APP-VERSION"
187                 value="${org.bedework.global.version}"/>
188         <filter token="WAR-NAME"
189                 value="${propval.app.war.name}"/>
190         <filter token="TOMCAT-DOC-BASE"
191                 value="${org.bedework.appserver.dir}${propval.app.deploy.dir}/${propval.app.war.name}"/>
192
193         <filter token="DEFAULT-CONTENTTYPE"
194                 value="${propval.app.default.contenttype}" />
195         <filter token="NOXSLT"
196                 value="${propval.app.noxslt}" />
197
198         <!-- Change this to be an app par -->
199         <filter token="RUN-AS-USER"
200                 value="${org.bedework.syspar.public.user}" />
201
202                 <!-- ???????
203         <filter token="CALFILE-NAME"
204                 value="${propval.app.calfile.name}" /> -->
205
206         <!--      Shell script settings            -->
207
208         <filter token="SCHEMA-DELIMITER"
209                 value="${propval.app.schema.delimiter}" />
210
211         <filter token="KEYFILE-DIR"
212                 value="${org.bedework.global.keyfile.dir}"/>
213
214         <filter token="calSoapWsURI"
215                 value="${org.bedework.calws-soap.uri}" />
216
217         <filter token="synchWsURI"
218                 value="${org.bedework.synch.uri}" />
219
220         <filter token="synchService"
221                 value="${org.bedework.synch.service}" />
222
223         <filter token="synchServiceManager"
224                 value="${org.bedework.synch.service.manager}" />
225
226         <filter token="SYNCH_WSDL_DIR"
227                 value="${org.bedework.synch.wsdl.deploy.dir}" />
228
229         <filter token="synchWsdlURI"
230                 value="${org.bedework.synch.wsdl.uri}" />
231
232         <filter token="tzdataURI"
233                 value="${org.bedework.app.tzsvr.tzdata.url}" />
234
235         <filter token="tzdataRefreshInterval"
236                 value="${org.bedework.app.tzsvr.refetch.interval}" />
237
238         <filter token="tzserverPrimary"
239                 value="${org.bedework.app.tzsvr.primary.server}" />
240
241         <filter token="tzserverPrimaryUrl"
242                 value="${org.bedework.app.tzsvr.primary.url}" />
243       </filterset>
244     </sequential>
245   </macrodef>
246      
247   <macrodef name="projectDefs">
248     <attribute name="name"/>
249     <attribute name="version"/>
250     <attribute name="deployment-name" default=""/>
251     <attribute name="subproject" default="false"/>
252     <sequential>
253       <property name="project.name" value="@{name}"/>
254      
255       <property name="project.version" value="@{version}"/>
256      
257       <property name="dist.home" location="${project.home}/dist"/>
258       <mkdir dir="${dist.home}" />
259
260       <property name="lib.dir" location="${project.home}/lib"/>
261
262       <property name="buildjar" location="${build.dir}/buildTools/buildjar.xml"/>
263       <property name="buildwar" location="${build.dir}/buildwar.xml"/>
264       <property name="buildsh" location="${build.dir}/buildsh.xml"/>
265
266       <property name="resources.dir" location="${project.home}/resources"/>
267
268       <property name="org.bedework.libcache.dir"
269                 location="${bedework.home}/libcache"/>
270      
271       <property name="org.bedework.temp.dir"
272                 location="${dist.home}/temp" />
273
274       <if>
275         <istrue value="@{subproject}" />
276         <then>
277           <property name="source.home" location="${project.home}/src"/>
278         </then>
279         <else>
280           <delete dir="${org.bedework.temp.dir}" />
281           <mkdir dir="${org.bedework.temp.dir}" />
282          
283           <property name="org.bedework.deployment.name"
284                     value="@{deployment-name}" />
285
286           <deftasks/>
287         </else>
288       </if>
289
290       <import file="${build.dir}/buildTools/getJar.xml"/>
291       <import file="${build.dir}/buildTools/jdoc.xml"/>
292     </sequential>
293   </macrodef>
294
295   <!-- ===================================================================
296        Load the deployment configuration from the properties file. We also load
297        the run time options and define some properties based on some of the
298        values found there
299        =================================================================== -->
300   <macrodef name="loadDeployConfig">
301     <!--<attribute name="extra.options" default="${org.bedework.carddav.options}"/> -->
302     <sequential>
303       <taskdef resource="net/sf/antcontrib/antcontrib.properties" />
304    
305       <if>
306         <not>
307           <isset property="bedework-options.org.bedework.global.portal.platform"/>
308         </not>
309         <then>
310         <property environment="env"/>
311  
312         <!-- Load build property definition overrides -->
313         <property file="${org.bedework.build.properties}" />
314  
315         <configMsg message="Loading build properties from ${org.bedework.build.properties}" />
316         <configMsg message="Use config override properties ${org.bedework.config.override.properties}" />
317         <configMsg message="Use config properties ${org.bedework.config.properties}" />
318         <configMsg message="Runtime options from ${org.bedework.config.options}" />
319  
320         <property file="${org.bedework.configuration.versions}" />
321         <property file="${org.bedework.config.override.properties}" />
322         <property file="${org.bedework.config.properties}" />
323  
324         <!-- Load the run time options and define some properties based on some
325              of the values -->
326  
327         <!-- Load the general bedework options -->
328         <xmlproperty file="${org.bedework.config.options}"/>
329  
330         <!-- Load the extra options
331         <xmlproperty file="@{extra.options}"/>-->
332  
333         <if>
334           <isset property="bedework-options.org.bedework.global.portal.platform"/>
335           <then>
336             <property name="org.bedework.global.portal.platform"
337                       value="${bedework-options.org.bedework.global.portal.platform}" />
338  
339             <property name="org.bedework.config.portal.home"
340                       value="${org.bedework.configurations.home}/.portal/${org.bedework.global.portal.platform}" />
341  
342             <property name="org.bedework.config.portal.common.home"
343                       value="${org.bedework.configurations.home}/.portal/common-resources" />
344  
345             <debugMsg message="******************* load from ${org.bedework.config.portal.home}/portal.properties" />
346  
347             <property file="${org.bedework.config.portal.home}/portal.properties" />
348           </then>
349           <else>
350             <debugMsg message="******************* load from ${org.bedework.configurations.home}/.standalone/standalone.properties" />
351  
352             <property file="${org.bedework.configurations.home}/.platform/standalone.properties" />
353           </else>
354         </if>
355  
356         <property name="org.bedework.global.version"
357                   value="${bedework-options.org.bedework.global.version}" />
358  
359         <property name="org.bedework.global.directory.browsing.disallowed"
360                   value="${bedework-options.org.bedework.syspars.directoryBrowsingDisallowed}" />
361         </then>
362       </if>
363     </sequential>
364   </macrodef>
365
366   <!-- =====================================================================
367        Assumes projectDefs was called previously.
368        ===================================================================== -->
369   <macrodef name="projectInit">
370     <sequential>
371       <infoMsg message="* =========== Building ${project.name}" />
372
373       <loadDeployConfig/>
374      
375       <delete dir="${lib.dir}" />
376       <mkdir dir="${lib.dir}" />
377
378       <property name="test.data.dir"
379                 location="${dist.home}/test-data" />
380
381       <property name="test.reports.dir"
382                 location="${dist.home}/test-reports" />
383
384       <property name="org.bedework.empty.dir"
385                 location="${dist.home}/empty-dir" />
386       <mkdir dir="${org.bedework.empty.dir}" />
387
388       <fileset id="empty.fileset" dir="${org.bedework.empty.dir}"
389                excludes="*" />
390
391       <!-- ==================== Compilation Classpath ==================== -->
392
393       <path id="compile.classpath">
394         <fileset dir="${lib.dir}">
395            <include name="*.jar"/>
396         </fileset>
397         <fileset dir="${dist.home}">
398            <include name="*.jar"/>
399         </fileset>
400       </path>
401     </sequential>
402   </macrodef>
403
404   <!-- =====================================================================
405        Assumes projectDefs was called previously.
406        Set things up ready for deployment
407        ===================================================================== -->
408   <macrodef name="deployInit">
409     <attribute name="ear-name"/>
410     <sequential>
411       <!-- Where we put ear stuff -->
412       <if>
413         <isset property="org.bedework.global.build.ear" />
414         <then>
415           <property name="app.ear.file.name"
416                     value="@{ear-name}.ear" />
417
418           <property name="org.bedework.ear.name"
419                     value="@{ear-name}" />
420
421           <property name="org.bedework.ear.templib"
422                     location="${org.bedework.temp.dir}/earlib" />
423
424           <property name="org.bedework.ear.properties.dir"
425                     location="${org.bedework.temp.dir}/ear-properties" />
426
427           <delete dir="${org.bedework.ear.templib}" />
428           <mkdir dir="${org.bedework.ear.templib}" />
429
430           <delete dir="${org.bedework.ear.properties.dir}" />
431           <mkdir dir="${org.bedework.ear.properties.dir}" />
432         </then>
433       </if>
434      
435       <property name="org.bedework.global.build.common.context.war.name"
436                 value="bw-common" />
437      
438       <property name="org.bedework.temp.wars.home"
439                 location="${org.bedework.temp.dir}/wars" />
440
441       <property name="org.bedework.temp.shellscr.home"
442                 location="${org.bedework.temp.dir}/shellscr" />
443
444       <!-- Recreated by each app build file. Place extra jars here -->
445       <property name="org.bedework.temp.extrajars.dir"
446                 location="${org.bedework.temp.dir}/extrajars" />
447
448       <!-- Preserve extra jars for ear builds -->
449       <property name="org.bedework.temp.ear.extrajars.dir"
450                 location="${org.bedework.temp.dir}/earextrajars" />
451      
452       <property name="org.bedework.global.context.roots"
453                 location="${org.bedework.temp.dir}/context-roots.properties" />
454
455       <tempfile property="org.bedework.global.context.roots"
456                 destdir="${org.bedework.temp.dir}"
457                 prefix="context-roots" suffix=".properties" />
458      
459       <!-- Clean up before we start -->
460       <delete dir="${org.bedework.temp.wars.home}" />
461       <mkdir dir="${org.bedework.temp.wars.home}" />
462
463       <delete dir="${org.bedework.temp.ear.extrajars.dir}" />
464       <mkdir dir="${org.bedework.temp.ear.extrajars.dir}" />
465
466       <delete dir="${org.bedework.temp.extrajars.dir}" />
467       <mkdir dir="${org.bedework.temp.extrajars.dir}" />
468     </sequential>
469   </macrodef>
470  
471   <macrodef name="deployTerm">
472     <sequential>
473       <ant antfile="${build.dir}/../deployment/termination/webapp/build.xml"
474            target="deploy" inheritRefs="true" />
475      
476       <!-- Platform specific -->
477       <ant antfile="${build.dir}/../deployment/termination/build.xml"
478            target="deploy" inheritRefs="true" />
479     </sequential>
480   </macrodef>
481
482   <!-- =================================================================
483        Standard targets for build files. Two targets (at least) need to be
484        overridden by the importing task
485        
486        init - carry out project specific initialisation
487        build-source - builds the source to creat ejars.
488        =================================================================-->
489  
490   <!-- Override this -->
491   <target name="init" />
492  
493   <!-- Override this -->
494   <target name="build-init" />
495
496   <!-- Override this -->
497   <target name="build-source" />
498  
499   <!-- Override this -->
500   <target name="deploy-init" depends="init">
501     <deployInit ear-name="" />
502   </target>
503  
504   <!-- Override this -->
505   <target name="deploy" depends="deploy-init,build" />
506
507   <!-- =================================================================
508        Clean out all library files from other projects and all generated
509        files in preparation for a complete rebuild.
510
511        Needed because switching versions leaves a load of old bedework
512        generated stuff in the libraries.
513        ================================================================= -->
514   <target name="deep-clean" depends="clean">
515   </target>
516
517   <!-- =================================================================
518        Clean all generated files
519        ================================================================= -->
520   <target name="clean">
521     <delete dir="${dist.home}" />
522     <delete dir="${lib.dir}" />
523   </target>
524
525   <target name="quickstart-clean" depends="clean" >
526   </target>
527
528   <!-- =================================================================
529        Clean and deploy in one go
530        ================================================================= -->
531   <target name="clean.deploy" depends="clean,deploy" />
532
533   <!-- =================================================================
534        Clean up after a build.
535        ================================================================= -->
536   <target name="cleanup">
537     <!--
538     <delete dir="${org.bedework.empty.dir}" />
539     -->
540   </target>
541
542   <!-- ========================== Base build Targets ===================
543        Here we have one target building the classes and interfaces that make
544        up the access control suite.
545        ================================================================= -->
546
547   <target name="clean-build" depends="clean,build"
548           description="Clean and compile access control classes"/>
549
550   <target name="clean-build-all" depends="clean,build-all"
551           description="Clean and compile access control classes"/>
552
553   <target name="build" depends="init,build-source,cleanup"
554           description="Compile access control classes"/>
555
556   <target name="build-all" depends="build"
557           description="Compile access control classes"/>
558  
559   <target name="javadoc" depends="build-init"
560           description="Create Javadoc API documentation">
561     <jdoc/>
562   </target>
563  
564   <macrodef name="build-jar-stats">
565     <sequential>
566       <if>
567         <not>
568           <isset property="org.bedework.jars.built" />
569         </not>
570         <then>
571           <echo message="No jars were checked or built" />
572         </then>
573         <else>
574           <echo message="${org.bedework.jars.checked} jars checked: ${org.bedework.jars.built} built" />
575         </else>
576       </if>
577     </sequential>
578   </macrodef>
579  
580   <!-- This macro builds a single jar file. It just sets defaults for the java
581        compiler then invokes it.
582
583        This is the only place we compile files.
584
585        On entry we require:
586          jar.file              Fully specified name of destination jar file.
587          base.java.sources     Defines the java source files
588          base.class.patternset Defines the java class files
589          base.resource.files   Defines extra resources to go in the jar
590
591        We will copy all files defined by base.java.patternset to a temporary
592        location and compile out of that into a temporary classes location.
593
594        We do that to avoid a problematic feature of the java compilers, the
595        tendency to recompile any referenced sources found on the source path.
596
597        So, if we have all our sources under the directory "src" and compile a
598        single package in that tree, all referenced classes will be compiled,
599        even if they exist in a jar file on the class path.
600
601        The other side-effect is that we might compile and include classes we
602        didn't realise we were compiling.
603
604        The downside is that we need to be very specific about the classes we
605        compile for a package and we might need to put classes in
606        base.java.sources which we don't want in the final jar file.
607
608        On exit we will have created classes in the directory
609           ${jar.temp.classes}
610        and a jar file
611           ${build.jar.file}
612
613        Authors: Mike Douglass   douglm rpi.edu
614   -->
615   <macrodef name="build-jar">
616     <attribute name="module-base"/>
617     <attribute name="jar-file"/>
618     <attribute name="jar-dependency" default=""/>
619     <attribute name="generated-sources" default=""/>
620     <attribute name="property-resources" default=""/>
621    
622     <sequential>
623       <if>
624         <not>
625           <isset property="org.bedework.jars.built" />
626         </not>
627         <then>
628           <var name="org.bedework.jars.built" value="0" />
629           <var name="org.bedework.jars.checked" value="0" />
630         </then>
631       </if>
632      
633       <math result="org.bedework.jars.checked"
634             operand1="${org.bedework.jars.checked}"
635             operation="+" operand2="1" datatype="int"/>
636
637       <if>
638         <equals arg1="@{generated-sources}" arg2="" />
639         <then>
640           <fileset id="buildjar.generated.java.sources" refid="empty.fileset" />
641         </then>
642         <else>
643           <fileset id="buildjar.generated.java.sources" dir="@{generated-sources}" >
644             <include name="org/bedework/**/*.java"/>
645           </fileset>
646         </else>
647       </if>
648
649       <if>
650         <equals arg1="@{property-resources}" arg2="" />
651         <then>
652           <fileset id="buildjar.resource.files" refid="empty.fileset" />
653         </then>
654         <else>
655           <fileset id="buildjar.resource.files" dir="@{property-resources}" >
656             <include name="**/*.properties"/>
657           </fileset>
658         </else>
659       </if>
660
661       <fileset id="buildjar.java.sources" dir="@{module-base}/src" >
662         <include name="**/*.java"/>
663       </fileset>
664
665       <patternset id="base.class.patternset">
666         <include name="**/*.class"/>
667       </patternset>
668
669       <if>
670         <not>
671           <equals arg1="@{jar-dependency}" arg2="" />
672         </not>
673         <then>
674           <var name="build.jar.dependency" value="@{jar-dependency}" />
675         </then>
676       </if>
677      
678       <!--  =================== Compilation Control Options ===============
679         These properties control option settings on the Javac compiler when it
680         is invoked using the <javac> task.
681
682         compile.debug        Should compilation include the debug option?
683         compile.deprecation  Should compilation include the deprecation option?
684         compile.optimize     Should compilation include the optimize option?
685
686         Below are the defaults. They may already be set in the build properties.
687       -->
688
689       <property name="compile.debug" value="true"/>
690       <property name="compile.deprecation" value="false"/>
691       <property name="compile.optimize" value="true"/>
692       <property name="compile.verbose" value="false"/>
693       <property name="compile.listfiles" value="false"/>
694
695       <var name="jar.temp.sources"
696            value="${dist.home}/source" />
697       <var name="jar.temp.classes"
698            value="${dist.home}/classes" />
699
700       <!-- ==============================================================
701             See if the jar is up to date. We recompile if any of the
702             source files or metainf files are newer. We also recompile if
703             any jars on the package classpath are newer.
704            ============================================================== -->
705
706       <noisyMsg message="build.jar.file=@{jar-file}" />
707      
708       <if>
709         <isset property="build.jar.dependency"/>
710         <then>
711           <dirname file="${build.jar.dependency}"
712                    property="dependency.dirname" />
713           <basename file="${build.jar.dependency}"
714                     property="dependency.basename" />
715           <fileset dir="${dependency.dirname}" id="dependency.fileset">
716             <include name="${dependency.basename}"/>
717           </fileset>
718         </then>
719         <else>
720           <fileset refid="empty.fileset" id="dependency.fileset"/>
721         </else>
722       </if>     
723
724       <!-- See if the libraries are later than any classes -->
725
726       <var name="org.bedework.libraries.changed" value="false" />
727      
728       <outofdate outputsources="org.bedework,changed.sources">
729         <sourcefiles>
730           <fileset dir="${lib.dir}">
731              <include name="*.jar"/>
732           </fileset>
733           <!-- This makes almost everything rebuild all the time
734                because it has the generated jars for the current package
735           <path refid="compile.classpath"/>
736           -->
737         </sourcefiles>
738         <targetfiles>
739           <pathelement path="@{jar-file}"/>
740         </targetfiles>
741         <sequential>
742           <var name="org.bedework.libraries.changed" value="true" />
743           <noisyMsg message="**** @{jar-file} needs rebuilding - libraries changed" />
744         </sequential>
745       </outofdate>
746      
747       <noisyMsg message="**** org.bedework,changed.sources = ${org.bedework,changed.sources}" />
748       <noisyMsg message="**** org.bedework.libraries.changed = ${org.bedework.libraries.changed}" />
749
750       <if>
751         <and>
752           <not>
753             <equals arg1="${org.bedework.libraries.changed}" arg2="true" />
754           </not>
755           <uptodate targetfile="@{jar-file}" >
756             <srcfiles refid="buildjar.java.sources" />
757             <srcfiles refid="buildjar.generated.java.sources" />
758             <srcfiles refid="buildjar.resource.files"/>
759             <srcfiles refid="dependency.fileset"/>
760           </uptodate>
761         </and>
762         <then>
763           <noisyMsg message="**** @{jar-file} is up to date" />
764         </then>
765         <else>
766           <noisyMsg message="**** @{jar-file} needs rebuilding" />
767
768           <math result="org.bedework.jars.built"
769                 operand1="${org.bedework.jars.built}"
770                 operation="+" operand2="1" datatype="int"/>
771
772           <!-- Delete jar file -->
773           <delete file="@{jar-file}"/>
774
775           <dirname property="build.jar.dir" file="@{jar-file}"/>
776
777           <mkdir dir="${build.jar.dir}" />
778
779           <!-- ==========================================================
780                             Build the classes
781                ========================================================== -->
782
783           <!-- First copy the sources we are going to compile into a temp
784                directory. -->
785           <delete dir="${jar.temp.sources}" />
786           <mkdir dir="${jar.temp.sources}" />
787          
788           <copy toDir="${jar.temp.sources}">
789             <fileset refid="buildjar.java.sources" />
790             <fileset refid="buildjar.generated.java.sources" />
791             <fileset refid="buildjar.resource.files"/>
792           </copy>
793
794           <mkdir dir="${jar.temp.classes}"/>
795          
796           <debugMsg message="About to build jar @{jar-file}"/>
797           <debugCpid idpar="compile.classpath" />
798
799           <javac srcdir="${jar.temp.sources}"
800                  destdir="${jar.temp.classes}"
801                  debug="${compile.debug}"
802                  verbose="${compile.verbose}"
803                  listfiles="${compile.listfiles}"
804                  deprecation="${compile.deprecation}"
805                  optimize="${compile.optimize}">
806             <classpath refid="compile.classpath"/>
807             <include name="**/*.java"/>
808             <compilerarg value="-nowarn" compiler="jikes" />
809           </javac>
810
811           <!-- ==========================================================
812                             Build jar file
813                ========================================================== -->
814
815           <jar jarfile="@{jar-file}">
816             <fileset dir="${jar.temp.classes}">
817               <patternset refid="base.class.patternset"/>
818             </fileset>
819             <fileset refid="buildjar.resource.files"/>
820           </jar>
821
822           <!-- ==========================================================
823                             Clean up
824                ========================================================== -->
825
826           <delete dir="${jar.temp.sources}" />
827           <delete dir="${jar.temp.classes}"/>
828         </else>
829       </if>
830     </sequential>
831   </macrodef>
832  
833   <macrodef name="infoMsg">
834     <attribute name="message"/>
835     <sequential>
836       <if>
837         <not>
838           <istrue value="${org.bedework.build.silent}" />
839         </not>
840         <then>
841           <echo message="@{message}" />
842         </then>
843       </if>
844     </sequential>
845   </macrodef>
846  
847   <macrodef name="noisyMsg">
848     <attribute name="message"/>
849     <sequential>
850       <if>
851         <istrue value="${org.bedework.build.noisy}" />
852         <then>
853           <echo message="@{message}" />
854         </then>
855       </if>
856     </sequential>
857   </macrodef>
858  
859   <macrodef name="configMsg">
860     <attribute name="message"/>
861     <sequential>
862       <if>
863         <istrue value="${org.bedework.build.showconfigs}" />
864         <then>
865           <echo message="@{message}" />
866         </then>
867       </if>
868     </sequential>
869   </macrodef>
870  
871   <macrodef name="debugMsg">
872     <attribute name="message"/>
873     <sequential>
874       <if>
875         <istrue value="${org.bedework.build.debug}" />
876         <then>
877           <echo message="@{message}" />
878         </then>
879       </if>
880     </sequential>
881   </macrodef>
882  
883   <macrodef name="debugCpid">
884     <attribute name="idpar"/>
885     <sequential>
886       <if>
887         <istrue value="${org.bedework.build.debug}" />
888         <then>
889           <property name="cp" refid="@{idpar}" />
890           <echo message="***************cp: ${cp}"/>
891         </then>
892       </if>
893     </sequential>
894   </macrodef>
895 </project>
Note: See TracBrowser for help on using the browser.