root/releases/bedework-3.7/deployment/build.xml

Revision 3104 (checked in by douglm, 2 years ago)

Remove definition of property "base.name" from (almost) every build file. Was not used.
Stop defining, creating and copying to libapi. Wasn't in use.

Remove build directory from every project and use the build files in the main bedework project. improves consistency and maintainability. Also allowed some bugs to be fixed.

Allow setting of message level during build and set it at quiet. Allows error messages to be more obvious.

Create macro to handle the common property definitions. Reduces size and complexity of build files.

Add a build-jar macro. Removes need for build files for sub-modules. Partway through converting to use that.

Line 
1 <?xml version="1.0"?>
2
3 <!-- ===================== Deployment build file =======================
4      This directory and the files within it are to be part of the config
5      and deployment process.
6      
7      ======================== new comment ========================
8      Modules are of type and kind.
9      
10      The type is for example, webadmin, usercaldav etc.
11      
12      The kind is webapp, shellscr etc.
13      
14      We cycle over the information we have for each application we want to
15      build and for each application use ants property mapping to map the
16      properties onto a constant set of names, e.g. the application specific
17      name
18          org.bedework.app.CalAdmin.deploy.dir
19      would be mapped onto
20          propval.app.deploy.dir
21          
22      We then look for build.xml files on a path given by the type and kind,
23      for example
24          webadmin/webapp/build.xml
25      or
26          indexer/shellscr/build.xml
27          
28      The intent was to allow certain modules to be built in different forms.
29      At one point it was also the case that we tried to deal with platform
30      specific issues through this scheme. Now that is handled by importing
31      platform specific build files into a generic build file.
32      
33      That may allow for some simplification.
34      ======================== old comment ========================
35
36      A number of properties of the form org.bedework.install.XXX will be
37      defined, each indicating that a particular component is to be deployed.
38
39      Targets below will be executed only if that property is defined.
40
41      Adding a new configuration, e.g. a different portal platform, requires
42      the steps:
43         Create a subdirectory in each components subdirectory,
44         e.g.  webadmin/myportal
45
46         Create any other required resource directories and resources and
47         create a build.xml file to configure and package the component(s).
48
49         Update the config program to load, save and display the new
50         properties for that configuration.
51
52         Add an antcall for each component and a corresponding target
53
54      Authors: Mike Douglass   douglm rpi.edu
55      =================================================================== -->
56
57 <project name="deploy.bedework" default="init">
58   <property name="org.bedework.temp.wars.home"
59             location="${org.bedework.temp.dir}/wars" />
60
61   <property name="org.bedework.temp.shellscr.home"
62             location="${org.bedework.temp.dir}/shellscr" />
63
64   <!-- Recreateed by each app build file. Place extra jars here -->
65   <property name="org.bedework.temp.extrajars.dir"
66             location="${org.bedework.temp.dir}/extrajars" />
67
68   <!-- Preserve extra jars for ear builds -->
69   <property name="org.bedework.temp.ear.extrajars.dir"
70             location="${org.bedework.temp.dir}/earextrajars" />
71        
72   <dirname property="this.build.dir" file="${ant.file}"/>
73   <property name="bedework.deployment.base" location="this.build.dir" />
74
75   <import file="${build.dir}/buildTools/getJar.xml"/>
76
77   <import file="${this.build.dir}/appjars.xml" />
78
79   <import file="${build.dir}/loadDeployConfig.xml"/>
80
81   <target name="init" >
82     <getAppJars />
83
84     <loadDeployConfig />
85
86     <!-- default to debug off -->
87     <property name="app.debug.val" value="0" />
88
89     <!-- set these for the war builds -->
90     <dirname property="app.root.dir" file="${ant.file}"/>
91    
92     <property name="org.bedework.deployment.name"
93               value="bedework" />
94    
95     <property name="org.bedework.sou.hibernate.properties"
96               location="${org.bedework.project.calendarapi}/calCore/resources" />
97    
98     <property name="org.bedework.jboss.datasource.jndiname"
99               value="${org.bedework.global.jboss.db.datasource.jndiname}" />
100    
101     <property name="org.bedework.options.file"
102               value="${org.bedework.config.options}" />
103
104     <!-- Common resources directory -->
105     <property name="org.bedework.common.resources"
106               location="${app.root.dir}/resources" />
107
108     <property name="org.bedework.global.build.common.context.war.name"
109               value="bw-common" />
110
111     <!-- Where we put ear stuff -->
112     <if>
113       <isset property="org.bedework.global.build.ear" />
114       <then>
115         <property name="app.ear.file.name"
116                   value="${org.bedework.global.ear.name}.ear" />
117
118         <property name="org.bedework.ear.name"
119                   value="${org.bedework.global.ear.name}" />
120
121         <property name="org.bedework.ear.properties.dir"
122                   location="${org.bedework.temp.dir}/ear-properties" />
123
124         <delete dir="${org.bedework.ear.templib}" />
125         <mkdir dir="${org.bedework.ear.templib}" />
126
127         <delete dir="${org.bedework.ear.properties.dir}" />
128         <mkdir dir="${org.bedework.ear.properties.dir}" />
129       </then>
130     </if>
131
132     <property name="org.bedework.global.context.roots"
133               location="${org.bedework.temp.dir}/context-roots.properties" />
134
135     <if>
136       <not>
137         <isset property="org.bedework.global.context.roots" />
138       </not>
139       <then>
140         <tempfile property="org.bedework.global.context.roots"
141                   destdir="${org.bedework.temp.dir}"
142                   prefix="context-roots" suffix=".properties" />
143       </then>
144     </if>
145   </target>
146
147                 <!--
148   <target name="deftasks" depends="init">
149     <path id="app.xml.cp">
150       <pathelement location="${org.bedework.deployutil.jar}"/>
151     </path>
152
153     <taskdef name="forEachApp"
154              classname="org.bedework.deployment.ForEachAppTask">
155       <classpath refid="app.xml.cp"/>
156     </taskdef>
157
158     <taskdef name="resolveFile"
159              classname="org.bedework.deployment.ResolveFile">
160       <classpath refid="app.xml.cp"/>
161     </taskdef>
162
163     <taskdef name="makeLangXsl"
164              classname="org.bedework.deployment.MakeLangXsl">
165       <classpath refid="app.xml.cp"/>
166     </taskdef>
167   </target>
168   -->
169
170   <target name="build.configured" depends="init" >
171     <!-- Clean up before we start -->
172     <delete dir="${org.bedework.temp.wars.home}" />
173
174     <antcall target="build.apps" inheritrefs="true" />
175   </target>
176
177   <!-- =================================================================
178        Targets called by the build.configured target. Each is conditional on a
179        config property and each executes a build file in a subdirectory of
180        this component.
181        ================================================================= -->
182
183   <target name="build.apps" >
184     <property name="org.bedework.deploy.kind" value="webapp" />
185     <antcall target="build.configured.apps" inheritrefs="true" />
186   </target>
187
188   <!-- =================================================================
189                          The deploy target.
190        ================================================================= -->
191
192   <target name="deploy" depends="init" >
193     <!-- Clean up before we start -->
194     <delete dir="${org.bedework.temp.wars.home}" />
195
196     <property name="org.bedework.lang.properties"
197               location="${org.bedework.project.calendarapi}/calFacade/resources/org/bedework/locale/resources" />
198
199     <property name="org.bedework.xsllang.dir"
200               location="${org.bedework.temp.dir}/xsllang" />
201
202     <delete dir="${org.bedework.xsllang.dir}"/>
203     <mkdir dir="${org.bedework.xsllang.dir}"/>
204
205     <makeLangXsl dir="${org.bedework.lang.properties}"
206                  prefix="BwResources"
207                  resdir="${org.bedework.xsllang.dir}"
208                  xsldir="${org.bedework.xsllang.dir}"
209                  name="org.bedework.locales"
210                  check="true" />
211
212     <!-- Build the webapps stuff.-->
213     <antcall target="deploy.apps" inheritrefs="true" >
214       <param name="org.bedework.deploy.kind" value="webapp" />
215     </antcall>
216
217     <!-- Build the shellscr stuff.-->
218     <antcall target="deploy.apps" inheritrefs="true" >
219       <param name="org.bedework.deploy.kind" value="shellscr" />
220     </antcall>
221
222     <!-- ================= termination tasks for deployment ================ -->
223
224     <ant antfile="${org.bedework.deployment.base}/termination/build.xml"
225          inheritrefs="true" target="deploy" />
226   </target>
227
228   <!-- =================================================================
229        Targets called by the deploy target. Each is conditional on a
230        config property and each executes a build file in a subdirectory of
231        this component.
232        ================================================================= -->
233
234   <!-- The cp.xalan task conditionally copies the xalan.jar file, if
235        necessary -->
236   <target name="cp.xalan" if="xalan.in.tomcat.common.endorsed">
237     <copy file="${org.bedework.default.lib}/xalan.jar"
238           todir="${appserver.endorsed.dir}"/>
239   </target>
240
241   <!-- =================================================================
242        Targets called by the build.configured target. Each is conditional on a
243        config property and each executes a build file in a subdirectory of
244        this component.
245        ================================================================= -->
246   <target name="build.configured.apps">
247     <forEachApp names="${org.bedework.install.app.names}"
248                 prefix="org.bedework.deploy"
249                 appPrefix="org.bedework.app"
250                 projectPrefix="org.bedework.project">
251       <sequential>
252         <antcall target="build.available.configured.app" inheritrefs="true" />
253       </sequential>
254     </forEachApp>
255
256     <!-- ==================== termination tasks for apps ================= -->
257
258     <ant antfile="${org.bedework.deployment.base}/termination/${org.bedework.deploy.kind}/build.xml"
259          inheritrefs="true" target="build.configured" />
260   </target>
261
262   <target name="build.available.configured.app">
263     <propertycopy name="propval.app.type"
264                   from="bedework-options.org.bedework.app.${org.bedework.deploy.name}.appType" />
265     <property name="org.bedework.deploy.type.dir"
266               location="${app.root.dir}/${org.bedework.deploy.name}/${propval.app.type}" />
267     <if>
268       <istrue value="${org.bedework.build.debug}" />
269       <then>
270         <echo message="*************** deployment build directory is ${org.bedework.deploy.type.dir}" />
271       </then>
272     </if>
273
274     <if>
275       <available file="${org.bedework.deploy.type.dir}/${org.bedework.deploy.kind}/build.xml"/>
276       <then>
277         <propertyset id="deploy-app-properties">
278           <propertyref prefix="org.bedework.app.${org.bedework.deploy.name}"/>
279           <globmapper from="org.bedework.app.${org.bedework.deploy.name}.*" to="propval.app.*"/>
280         </propertyset>
281
282         <propertycopy name="propval.app.unauthenticated"
283                       from="bedework-options.org.bedework.app.${org.bedework.deploy.name}.guestMode" />
284
285         <ant antfile="${org.bedework.deploy.type.dir}/${org.bedework.deploy.kind}/build.xml"
286              inheritrefs="true" target="build.configured" >
287           <propertyset refid="deploy-app-properties" />
288         </ant>
289       </then>
290     </if>
291   </target>
292
293   <target name="deploy.apps">
294     <forEachApp names="${org.bedework.install.app.names}"
295                 prefix="org.bedework.deploy"
296                 appPrefix="org.bedework.app"
297                 projectPrefix="org.bedework.project">
298       <sequential>
299         <antcall target="deploy.available.app" inheritrefs="true" />
300       </sequential>
301     </forEachApp>
302
303     <!-- =================== termination tasks for apps ================= -->
304
305     <ant antfile="${org.bedework.deployment.base}/termination/${org.bedework.deploy.kind}/build.xml"
306          inheritrefs="true" target="deploy" />
307   </target>
308
309   <target name="deploy.available.app">
310     <propertycopy name="propval.app.type"
311                   from="bedework-options.org.bedework.app.${org.bedework.deploy.name}.appType" />
312     <property name="org.bedework.deploy.type.dir"
313               location="${app.root.dir}/${propval.app.type}" />
314     <if>
315       <istrue value="${org.bedework.build.debug}" />
316       <then>
317         <echo message="*********************** deployment build directory is ${org.bedework.deploy.type.dir}" />
318       </then>
319     </if>
320
321     <if>
322       <available file="${org.bedework.deploy.type.dir}/${org.bedework.deploy.kind}/build.xml"/>
323       <then>
324         <propertyset id="deploy-app-properties">
325           <propertyref prefix="org.bedework.app.${org.bedework.deploy.name}"/>
326           <globmapper from="org.bedework.app.${org.bedework.deploy.name}.*" to="propval.app.*"/>
327         </propertyset>
328
329         <propertycopy name="propval.app.unauthenticated"
330                       from="bedework-options.org.bedework.app.${org.bedework.deploy.name}.guestMode" />
331
332         <ant antfile="${org.bedework.deploy.type.dir}/${org.bedework.deploy.kind}/build.xml"
333              inheritrefs="true" target="deploy" >
334           <propertyset refid="deploy-app-properties" />
335         </ant>
336       </then>
337     </if>
338   </target>
339 </project>
340
Note: See TracBrowser for help on using the browser.