Update the JBoss location.
[pithos] / build.xml
1 <?xml version="1.0" encoding="utf-8" ?>
2 <project name="gss" default="deploy" basedir=".">
3         <description>The GSS project build file</description>
4
5         <property file="build.properties"/>
6     <property name="deps.dir" value="dependencies"/>
7
8         <!-- User-editable settings. These are the only settings in this file that
9         a user may consider changing. Note that these can also be configured
10         through command line parameters (e.g. "ant -Dgwt.workers=2") or a
11         build.properties file. -->
12     <property name="gwt.workers" value="1" />
13     <property name="jboss.home" value="${deps.dir}/jboss-5.1.0.GA" />
14     <property name="jboss.args" value="" />
15
16         <!-- Library and runtime dependencies -->
17     <property name="jboss.version" value="5.1.0" />
18     <property name="jboss.filename" value="jboss-5.1.0.GA-jdk6.zip"/>
19         <property name="jboss.download.url" value="http://switch.dl.sourceforge.net/project/jboss/JBoss/JBoss-${jboss.version}.GA/${jboss.filename}"/>
20     <property name="gwt.path" value="${deps.dir}/gwt-2.0.4"/>
21     <property name="gwt.filename" value="gwt-2.0.4.zip"/>
22         <property name="gwt.download.url" value="http://google-web-toolkit.googlecode.com/files/gwt-2.0.4.zip"/>
23     <property name="hornetq.path" value="${deps.dir}/hornetq-2.0.0.GA" />
24     <property name="hornetq.filename" value="hornetq-2.0.0.GA.zip/"/>
25     <property name="hornetq.download.url" value="http://sourceforge.net/projects/hornetq/files/2.0.0.GA/hornetq-2.0.0.GA.zip/download"/>
26     <property name="junit.path" value="${deps.dir}/junit3.8.1" />
27     <property name="junit.filename" value="junit3.8.1.zip"/>
28     <property name="junit.download.url" value="http://sourceforge.net/projects/junit/files/junit/3.8.1/junit3.8.1.zip/download"/>
29     <property name="gwt-dnd.filename" value="gwt-dnd-3.0.1.jar"/>
30     <property name="gwt-dnd.download.url" value="http://gwt-dnd.googlecode.com/files/gwt-dnd-3.0.1.jar"/>
31     <property name="gwt-gears.path" value="${deps.dir}/gwt-gears-1.3.0" />
32     <property name="gwt-gears.filename" value="gwt-gears-1.3.0.zip"/>
33     <property name="gwt-gears.download.url" value="http://gwt-google-apis.googlecode.com/files/gwt-gears-1.3.0.zip"/>
34     <property name="gwt-visualization.path" value="${deps.dir}/gwt-visualization-1.1.0" />
35     <property name="gwt-visualization.filename" value="gwt-visualization-1.1.0.zip"/>
36     <property name="gwt-visualization.download.url" value="http://gwt-google-apis.googlecode.com/files/gwt-visualization-1.1.0.zip"/>
37     <property name="gwt-incubator.filename" value="gwt-incubator-20100204-r1747.jar"/>
38     <property name="gwt-incubator.download.url" value="http://google-web-toolkit-incubator.googlecode.com/files/gwt-incubator-20100204-r1747.jar"/>
39
40         <!-- Source and runtime layout configuration -->
41         <property name="jboss_run_configuration" value="default" />
42     <property name="root.context" value="gss" />
43     <property name="gwt.module" value="gr.ebs.gss.GSS" />
44     <property name="gwt.module.class" value="GSS" />
45     <property name="gwt.admin.module" value="gr.ebs.gss.admin.TwoAdmin" />
46     <property name="gwt.admin.module.class" value="TwoAdmin" />
47         <property name="src.dir" value="${basedir}/src"/>
48     <property name="jboss-spec.dir" value="${basedir}/jboss" />
49     <property name="jboss-spec.conf.dir" value="${jboss-spec.dir}/conf" />
50     <property name="jboss-spec.bin.dir" value="${jboss-spec.dir}/bin" />
51     <property name="jboss-spec.deploy.dir" value="${jboss-spec.dir}/deploy" />
52     <property name="jboss-spec.lib.dir" value="${jboss-spec.dir}/lib" />
53         <property name="jboss.project" value="${basedir}/jboss-config/${jboss.version}" />
54         <property name="jboss.bin.dir" value="${jboss.home}/bin" />
55         <property name="jboss.conf.dir" value="${jboss.home}/server/${jboss_run_configuration}/conf" />
56         <property name="jboss.deploy.dir" value="${jboss.home}/server/${jboss_run_configuration}/deploy" />
57         <property name="jboss.run_conf.lib.dir" value="${jboss.home}/server/${jboss_run_configuration}/lib" />
58         <property name="jboss.lib.dir" value="${jboss.home}/lib" />
59         <property name="jboss.common.lib.dir" value="${jboss.home}/common/lib" />
60
61         <!-- MBeans -->
62         <property name="mbeans.dir" value="${basedir}/mbeans"/>
63         <property name="mbeans.meta-inf.dir" value="${mbeans.dir}/META-INF"/>
64
65         <!-- JUnit dirs -->
66         <property name="test.dir" value="${basedir}/test" />
67         <property name="test.src.dir" value="${test.dir}/src"/>
68
69         <!-- Build dirs -->
70         <property name="build.dir" value="${basedir}/bin" />
71         <property name="build.classes.dir" value="${build.dir}/classes" />
72         <property name="test.build.dir" value="${build.dir}" />
73         <property name="test.build.classes.dir" value="${test.build.dir}/" />
74         <property name="gwt.www.dir" value="${basedir}/www" />
75         <property name="gwt.www.admin.dir" value="${basedir}/wwwadmin" />
76         <property name="dist.war" value="${ant.project.name}.war"/>
77         <property name="dist.admin.war" value="${ant.project.name}-admin.war"/>
78         <property name="webdav.war" value="webdav.war"/>
79         <property name="dist.ear" value="${ant.project.name}.ear"/>
80         <property name="war.dir" value="${basedir}/war" />
81         <property name="war.web-inf.dir" value="${war.dir}/WEB-INF"/>
82         <property name="war.lib.dir" value="${war.web-inf.dir}/lib"/>
83         <property name="war.admin.dir" value="${basedir}/waradmin" />
84         <property name="war.admin.web-inf.dir" value="${war.dir}/WEB-INF"/>
85         <property name="war.admin.lib.dir" value="${war.web-inf.dir}/lib"/>
86         <property name="webdav.war.dir" value="${basedir}/webdav" />
87         <property name="webdav.war.web-inf.dir" value="${webdav.war.dir}/WEB-INF"/>
88         <property name="webdav.war.lib.dir" value="${webdav.war.web-inf.dir}/lib"/>
89         <property name="ear.dir" value="${basedir}/ear" />
90         <property name="ear.lib.dir" value="${ear.dir}/lib" />
91         <property name="mbeans.dist.file" value="${ant.project.name}-mbeans.sar"/>
92
93         <!-- set classpath -->
94         <path id="project.class.path">
95                 <pathelement path="${java.class.path}/" />
96                 <pathelement path="${gwt.path}/gwt-user.jar" />
97                 <pathelement location="${jboss.common.lib.dir}/commons-logging.jar"/>
98                 <pathelement location="${jboss.common.lib.dir}/ejb3-persistence.jar"/>
99                 <pathelement location="${jboss.common.lib.dir}/jboss-ejb3-ext-api.jar"/>
100                 <pathelement location="${jboss.common.lib.dir}/jboss-javaee.jar"/>
101                 <pathelement location="${jboss.common.lib.dir}/jbosssx.jar"/>
102                 <pathelement location="${jboss.common.lib.dir}/hibernate-core.jar"/>
103         <pathelement location="${jboss.common.lib.dir}/hibernate-annotations.jar"/>
104                 <pathelement location="${jboss.lib.dir}/jboss-j2se.jar"/>
105                 <pathelement location="${jboss.lib.dir}/jboss-kernel.jar"/>
106                 <pathelement location="${jboss.lib.dir}/jboss-system-jmx.jar"/>
107                 <pathelement location="${jboss.lib.dir}/jboss-system.jar"/>
108                 <pathelement location="${jboss.lib.dir}/jbosssx.jar"/>
109                 <pathelement location="${ear.lib.dir}/commons-codec-1.4.jar"/>
110                 <pathelement location="${ear.lib.dir}/commons-configuration-1.6.jar"/>
111                 <pathelement location="${war.lib.dir}/commons-fileupload-1.2.jar"/>
112         <pathelement location="${ear.lib.dir}/commons-httpclient-3.1.jar"/>
113                 <pathelement location="${ear.lib.dir}/commons-lang.jar"/>
114                 <pathelement location="${ear.lib.dir}/ldap.jar"/>
115                 <pathelement location="${junit.path}/junit.jar"/>
116                 <pathelement location="${deps.dir}/${gwt-dnd.filename}"/>
117                 <pathelement location="${gwt-gears.path}/gwt-gears.jar"/>
118                 <pathelement location="${deps.dir}/${gwt-incubator.filename}"/>
119                 <pathelement location="${gwt-visualization.path}/gwt-visualization.jar"/>
120         </path>
121
122         <target name="check-jboss">
123                 <available file="${jboss.home}" type="dir" property="jboss.home.present"/>
124         </target>
125
126     <target name="fetch-dependencies" description="Fetch the dpendencies" unless="jboss.home.present" depends="check-jboss">
127         <mkdir dir="${deps.dir}"/>
128         <get src="${gwt.download.url}" dest="${deps.dir}/${gwt.filename}" usetimestamp="true"/>
129         <get src="${gwt-dnd.download.url}" dest="${deps.dir}/${gwt-dnd.filename}" usetimestamp="true"/>
130         <get src="${gwt-gears.download.url}" dest="${deps.dir}/${gwt-gears.filename}" usetimestamp="true"/>
131         <get src="${gwt-visualization.download.url}" dest="${deps.dir}/${gwt-visualization.filename}" usetimestamp="true"/>
132         <get src="${gwt-incubator.download.url}" dest="${deps.dir}/${gwt-incubator.filename}" usetimestamp="true"/>
133         <get src="${hornetq.download.url}" dest="${deps.dir}/${hornetq.filename}" usetimestamp="true"/>
134         <get src="${junit.download.url}" dest="${deps.dir}/${junit.filename}" usetimestamp="true"/>
135         <get src="${jboss.download.url}" dest="${deps.dir}/${jboss.filename}" usetimestamp="true"/>
136         <unzip src="${deps.dir}/${gwt.filename}" dest="${deps.dir}"/>
137         <unzip src="${deps.dir}/${gwt-gears.filename}" dest="${deps.dir}"/>
138         <unzip src="${deps.dir}/${gwt-visualization.filename}" dest="${deps.dir}"/>
139         <unzip src="${deps.dir}/${hornetq.filename}" dest="${deps.dir}"/>
140         <unzip src="${deps.dir}/${junit.filename}" dest="${deps.dir}"/>
141         <unzip src="${deps.dir}/${jboss.filename}" dest="${jboss.home}/.."/>
142     </target>
143
144         <target name="install" depends="fetch-dependencies" description="Installs the configuration files of the application server">
145                 <!-- Install HornetQ configuration -->
146                 <copy todir="${jboss.run_conf.lib.dir}">
147                         <fileset dir="${hornetq.path}/lib">
148                                 <include name="hornetq-*.jar"/>
149                                 <include name="netty*.jar"/>
150                         </fileset>
151                 </copy>
152                 <property name="hornetq.sar.dir" value="${jboss.deploy.dir}/hornetq.sar"/>
153                 <mkdir dir="${hornetq.sar.dir}"/>
154                 <copy todir="${hornetq.sar.dir}">
155                         <fileset dir="${hornetq.path}/config/jboss-as/non-clustered" includes="*" excludes="**/jboss-as-4/**"/>
156                 </copy>
157                 <unzip src="${hornetq.path}/lib/hornetq-ra.rar" dest="${jboss.deploy.dir}/hornetq-ra.rar"/>
158                 <delete dir="${jboss.deploy.dir}/messaging" failonerror="false"/>
159                 <mkdir dir="${jboss.bin.dir}/META-INF/lib/linux2/x86"/>
160                 <mkdir dir="${jboss.bin.dir}/META-INF/lib/linux2/x64"/>
161                 <copy todir="${jboss.bin.dir}/META-INF/lib/linux2/x86" file="${hornetq.path}/bin/libHornetQAIO32.so"/>
162                 <copy todir="${jboss.bin.dir}/META-INF/lib/linux2/x64" file="${hornetq.path}/bin/libHornetQAIO64.so"/>
163                 <!-- Install gss configuration -->
164                 <copy todir="${jboss.bin.dir}" overwrite="true" failonerror="false">
165                         <fileset dir="${jboss.project}/bin"/>
166                 </copy>
167                 <copy todir="${jboss.bin.dir}" overwrite="true" failonerror="false">
168                         <fileset dir="${jboss-spec.bin.dir}" />
169                 </copy>
170                 <copy todir="${jboss.conf.dir}" overwrite="true" failonerror="false">
171                         <fileset dir="${jboss.project}/conf"/>
172                 </copy>
173                 <copy todir="${jboss.conf.dir}" overwrite="true" failonerror="false">
174                         <fileset dir="${jboss-spec.conf.dir}"/>
175                 </copy>
176                 <copy todir="${jboss.run_conf.lib.dir}" overwrite="true" failonerror="false">
177                         <fileset dir="${jboss.project}/lib"/>
178                 </copy>
179                 <copy todir="${jboss.run_conf.lib.dir}" overwrite="true" failonerror="false">
180                         <fileset dir="${jboss-spec.lib.dir}" />
181                 </copy>
182                 <copy todir="${jboss.deploy.dir}" overwrite="true" failonerror="false">
183                         <fileset dir="${jboss.project}/deploy"/>
184                 </copy>
185                 <copy todir="${jboss.deploy.dir}" overwrite="true" failonerror="false">
186                         <fileset dir="${jboss-spec.deploy.dir}" />
187                 </copy>
188         <!-- Make run.sh executable again -->
189         <chmod file="${jboss.bin.dir}/run.sh" perm="ugo+x"/>
190         </target>
191
192         <target name="compile" description="Compile src to bin">
193                 <mkdir dir="bin" />
194                 <javac srcdir="src:test" destdir="bin" debug="on" debuglevel="lines,vars,source" source="1.6">
195                         <classpath refid="project.class.path" />
196                 </javac>
197         </target>
198
199         <target name="package-code" depends="compile" description="Package up the project code as a jar">
200                 <jar destfile="${build.dir}/${ant.project.name}.jar">
201                         <fileset dir="bin">
202                                 <include name="org/json/**" />
203                                 <include name="**/client/AdminService.class" />
204                                 <include name="**/server/**" />
205                                 <exclude name="**/domain/**"/>
206                                 <exclude name="**/ejb/**"/>
207                         </fileset>
208                         <fileset dir="src">
209                                 <include name="**/*.xml" />
210                                 <include name="**/client/exceptions/**" />
211                                 </fileset>
212                 </jar>
213         </target>
214
215         <target name="package-webdav" depends="compile" description="Package up the webdav code as a jar">
216                 <jar destfile="${build.dir}/webdav.jar">
217                         <fileset dir="bin">
218                                 <include name="**/webdav/**" />
219                         </fileset>
220                 </jar>
221         </target>
222
223         <target name="package-ejb" depends="compile" description="Package up the EJB classes">
224                 <jar destfile="${build.dir}/ejbs.jar">
225                         <zipfileset dir="${basedir}/persistence" />
226                         <zipfileset dir="${build.dir}">
227                                 <include name="**/configuration/**" />
228                                 <include name="**/exceptions/**" />
229                                 <include name="**/domain/**" />
230                                 <include name="**/ejb/**" />
231                                 <exclude name="**/*Test.class"/>
232                         </zipfileset>
233                 </jar>
234         </target>
235
236         <target name="check-gwt-compile" depends="compile">
237                 <uptodate property="compilation-not-needed">
238                         <srcfiles dir="${src.dir}" excludes="**/server/**"/>
239                         <mergemapper to="${build.dir}/www/gr.ebs.gss.GSS.nocache.js"/>
240                 </uptodate>
241         </target>
242
243         <target name="gwt-compile" depends="check-gwt-compile" unless="compilation-not-needed" description="Compile client code to JavaScript">
244         <condition property="gwt-dev-lib" value="${gwt.path}/gwt-dev.jar">
245                 <available file="${gwt.path}/gwt-dev.jar" />
246         </condition>
247                 
248                 <java classname="com.google.gwt.dev.Compiler" failonerror="true" fork="true">
249                         <!--arg value="-style"/>
250                         <arg value="DETAILED"/-->
251                         <arg value="-localWorkers" />
252                         <arg value="${gwt.workers}" />
253                         <arg value="-war"/>
254                         <arg value="${gwt.www.dir}"/>
255                         <arg value="${gwt.module}"/>
256                         
257                     <classpath>
258                         <pathelement path="${gwt-dev-lib}"/>
259                                 <path refid="project.class.path" />
260                                 <pathelement path="${src.dir}" />
261                     </classpath>
262                 </java>
263                 <mkdir dir="${build.dir}/www"/>
264                 <copy todir="${build.dir}/www">
265                         <fileset dir="${gwt.www.dir}/${gwt.module}" excludes="**/${gwt.module.class}.html">
266                         </fileset>
267                 </copy>
268                 <copy file="${gwt.www.dir}/${gwt.module}/${gwt.module.class}.html" tofile="${build.dir}/www/index.html" />
269         </target>
270         
271         <target name="package-war" depends="gwt-compile, package-code" description="Package up the web part as a war">
272                 <jar destfile="${build.dir}/${dist.war}">
273                         <zipfileset dir="${war.dir}" >
274                             <exclude name="**/classes/**"/>
275                         </zipfileset>
276                         <zipfileset dir="${build.dir}/www" />
277                         <zipfileset dir="${build.dir}" prefix="WEB-INF/lib">
278                                 <include name="${ant.project.name}.jar" />
279                         </zipfileset>
280                 </jar>
281         </target>
282         
283         <target name="check-gwt-admin-compile" depends="compile">
284                 <uptodate property="compilation-not-needed">
285                         <srcfiles dir="${src.dir}" excludes="**/server/**"/>
286                         <mergemapper to="${build.dir}/wwwadmin/gr.ebs.gss.admin.TwoAdmin.nocache.js"/>
287                 </uptodate>
288         </target>
289
290         <target name="gwt-admin-compile" depends="check-gwt-admin-compile" unless="compilation-not-needed" description="Compile client code to JavaScript">
291         <condition property="gwt-dev-lib" value="${gwt.path}/gwt-dev.jar">
292                 <available file="${gwt.path}/gwt-dev.jar" />
293         </condition>
294                 
295                 <java classname="com.google.gwt.dev.Compiler" failonerror="true" fork="true">
296                         <!--arg value="-style"/>
297                         <arg value="DETAILED"/-->
298                         <arg value="-localWorkers" />
299                         <arg value="${gwt.workers}" />
300                         <arg value="-war"/>
301                         <arg value="${gwt.www.admin.dir}"/>
302                         <arg value="${gwt.admin.module}"/>
303             <jvmarg value="-Xmx128m"/>                                          
304                     <classpath>
305                         <pathelement path="${gwt-dev-lib}"/>
306                                 <path refid="project.class.path" />
307                                 <pathelement path="${src.dir}" />
308                     </classpath>
309                 </java>
310                 <mkdir dir="${build.dir}/wwwadmin"/>
311                 <copy todir="${build.dir}/wwwadmin">
312                         <fileset dir="${gwt.www.admin.dir}/${gwt.admin.module}" excludes="**/${gwt.admin.module.class}.html">
313                         </fileset>
314                 </copy>
315                 <copy file="${gwt.www.admin.dir}/${gwt.admin.module}/${gwt.admin.module.class}.html" tofile="${build.dir}/wwwadmin/index.html" />
316         </target>
317                 
318         <target name="package-admin-war" depends="gwt-admin-compile, package-code" description="Package up the web part as a war">
319                 <jar destfile="${build.dir}/${dist.admin.war}">
320                         <zipfileset dir="${war.admin.dir}" >
321                                   <exclude name="**/classes/**"/>
322             </zipfileset>
323                         <zipfileset dir="${build.dir}/wwwadmin" />
324                         <zipfileset dir="${build.dir}" prefix="WEB-INF/lib">
325                                 <include name="${ant.project.name}.jar" />
326                         </zipfileset>
327                         <zipfileset dir="${gwt.path}" prefix="WEB-INF/lib">
328                                 <include name="gwt-servlet.jar" />
329                         </zipfileset>
330                 </jar>
331         </target>
332
333         <target name="package-webdav-war" depends="package-webdav" description="Package up the WebDAV part as a war">
334                 <jar destfile="${build.dir}/${webdav.war}">
335                         <zipfileset dir="${webdav.war.dir}" />
336                         <zipfileset dir="${build.dir}" prefix="WEB-INF/lib">
337                                 <include name="webdav.jar" />
338                         </zipfileset>
339                 </jar>
340         </target>
341
342         <target name="package-mbeans" depends="compile">
343                 <jar jarfile="${build.dir}/${mbeans.dist.file}" basedir="${build.dir}">
344                         <include name="**/mbeans/**"/>
345                         <metainf dir="${mbeans.meta-inf.dir}"/>
346                 </jar>
347         </target>
348         
349         <target name="package-ear" depends="package-admin-war, package-war, package-webdav-war, package-ejb, package-mbeans" description="Package up the project as an ear">
350                 <jar destfile="${build.dir}/${dist.ear}">
351                         <zipfileset dir="${ear.dir}" />
352                         <zipfileset dir="${build.dir}">
353                                 <include name="ejbs.jar" />
354                                 <include name="${dist.war}" />
355                                 <include name="${webdav.war}" />
356                 <include name="${dist.admin.war}" />
357                                 <include name="${mbeans.dist.file}"/>
358                         </zipfileset>
359                 </jar>
360         </target>
361
362         <target name="deploy" depends="package-ear" description="Deploy the project to the server">
363                 <copy todir="${jboss.deploy.dir}" file="${build.dir}/${dist.ear}"/>
364         </target>
365
366         <target name="redeploy" depends="package-ear" description="Redeploy the project to the server">
367                 <copy todir="${jboss.deploy.dir}" file="${build.dir}/${dist.ear}" overwrite="yes"/>
368         </target>
369
370         <target name="undeploy" description="Undeploy the project from the server">
371                 <delete file="${jboss.deploy.dir}/${dist.ear}"/>
372         </target>
373
374         <target name="clean" description="Delete the contents of the bin and www directories">
375                 <delete dir="${build.dir}"/>
376                 <delete dir="${gwt.www.dir}"/>
377                 <delete dir="${gwt.www.admin.dir}"/>
378         </target>
379
380     <target name="deinstall"
381         description="Delete the contents of the JBoss home directory">
382         <delete dir="${jboss.home}"/>
383     </target>
384
385     <target name="distclean" depends="deinstall, clean"
386         description="Delete the contents of the JBoss home directory and all downloaded artifacts">
387         <delete dir="${deps.dir}"/>
388     </target>
389
390         <target name="test" description="Performs unit tests on the project" depends="compile">
391                 <available
392                       property="junit.present"
393                       classname="org.apache.tools.ant.taskdefs.optional.junit.JUnitTask"
394                       classpathref="project.class.path"/>
395             <fail unless="junit.present">
396               ##################################################################
397               JUnit not found.
398               Please make sure junit.jar is in ANT_HOME/lib, or made available
399               to Ant using other mechanisms like -lib or CLASSPATH.
400               ##################################################################
401                 </fail>
402
403                 <junit printsummary="withOutAndErr" fork="yes" haltonfailure="yes">
404                         <classpath refid="project.class.path"/>
405                         <formatter type="plain"/>
406                         <batchtest todir="${test.build.dir}">
407                                 <fileset dir="${test.build.classes.dir}">
408                                         <include name="**/*Test.class"/>
409                                 </fileset>          
410                         </batchtest>
411
412                 </junit>
413         </target>
414
415         <target name="run" description="Starts the server" depends="deploy">
416         <exec executable="${jboss.bin.dir}/run.sh" osfamily="unix">
417             <arg line="${jboss.args}"/>
418         </exec>
419                 <exec executable="cmd" osfamily="windows">
420                     <arg value="/c"/>
421                     <arg value="${jboss.bin.dir}/run.bat"/>
422             <arg line="${jboss.args}"/>
423                 </exec>
424     </target>
425 </project>