• Views
  • Iteration Report
  • My Iteration Report
  •  
OMERO.server
  • Login
  • Help/Guide
  • About Trac
  • Preferences
  • Wiki
  • Timeline
  • Roadmap
  • Browse Source
  • View Tickets
  • Search

Context Navigation

  • Last Change
  • Annotate
  • Revision Log

root/trunk/build.xml

Revision 2771, 16.8 kB (checked in by jmoore, 30 hours ago)

More test changes for hudson

Previously, the default ant target "build-default" ran no tests,
because unit tests and integration tests were lumped together.
Moving forward with hudson, we need more intelligent stop/start
logic to run the integration tests, so I've taken the "integration"
target out of the lifecycle.xml dependency graph.

Now, both build-default and, therefore, hudson.sh will run
unit tests, but not integration tests. The "quick" target and/or
setting "test.skip" will still prevent unit tests from running.

  • Property svn:keywords set to Id
Line 
1<?xml version="1.0" encoding="utf-8"?>
2<project name="main" default="build-default" basedir="."  xmlns:ivy="antlib:org.apache.ivy.ant">
3<!--
4#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
5#
6# $Id$
7#
8# Copyright 2008 Glencoe Software, Inc. All rights reserved.
9# Use is subject to license terms supplied in LICENSE.txt
10#
11#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
12
13#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
14# Written by:  Josh Moore, josh at glencoesoftware.com
15#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
16
17Rewrite of the OMERO build system to allow for building
18individual components. Use "ant -p" to see the individual
19build-* targets.
20
21-->
22
23    <property name="import.dir" value="${basedir}/components/antlib/resources"/>
24    <import file="${basedir}/deprecated.xml"/>
25    <import file="${import.dir}/global.xml"/>
26
27    <target name="ivy-init" unless="ivy.done">
28
29        <!-- Prevent future invocations and PermGen errors-->
30        <property name="ivy.done" value="done"/>
31
32        <!-- Top-level ivy setup. Also defined in antlib/resources/dependencies.xml -->
33        <path id="ivy.classpath">
34            <fileset dir="${omero.home}/lib/repository" includes="ivy*.jar"/>
35        </path>
36        <taskdef resource="org/apache/ivy/ant/antlib.xml" uri="antlib:org.apache.ivy.ant" classpathref="ivy.classpath"/>
37        <property name="deps.buildlist.dir" value="${omero.home}/components"/>
38
39        <ivy:settings id="ivy.toplevel"  file="${etc.dir}/ivysettings.xml" override="true"/>
40        <ivy:buildlist reference="all.buildpath" settingsRef="ivy.toplevel">
41            <fileset dir="${deps.buildlist.dir}" includes="*/build.xml" excludes="**/policy/**,**/tools/**"/>
42        </ivy:buildlist>
43        <ivy:buildlist reference="blitzserver.buildpath" settingsRef="ivy.toplevel">
44            <fileset dir="${deps.buildlist.dir}" includes="*/build.xml" excludes="**/app/**,**/policy/**,**/tools/**"/>
45        </ivy:buildlist>
46        <ivy:buildlist reference="appserver.buildpath" settingsRef="ivy.toplevel">
47            <fileset dir="${deps.buildlist.dir}" includes="*/build.xml" excludes="**/blitz/**,**/policy/**,**/tools/**"/>
48        </ivy:buildlist>
49        <!-- Single file paths defined in antlib/resources/directories.xml -->
50    </target>
51
52    <target name="quick" description="Disable tests">
53        <property name="test.skip" value="true"/>
54    </target>
55
56    <target name="clean" description="Calls 'clean' on all components" depends="ivy-init">
57        <iterate buildpathref="all.buildpath"   target="clean"/>
58        <iterate buildpathref="tools.buildpath" target="clean"/>
59        <delete dir="${dist.dir}"/>
60        <delete dir="${lib.dir}/cache"/>
61        <delete includeemptydirs="true">
62            <fileset dir="${lib.dir}/repository/omero" includes="**/*"/>
63        </delete>
64    </target>
65
66    <target name="build-default" description="Build all components except for C++ (testing disabled)" depends="ivy-init">
67        <property name="env.NOMAKE" value="1"/>
68        <iterate buildpathref="blitzserver.buildpath" target="dist"/>
69        <iterate buildpathref="app.buildpath" target="dist"/>
70        <antcall target="prepare-dist" inheritRefs="true" inheritAll="true"/>
71        <iterate buildpathref="OmeroImporter.buildpath" target="tools-dist"/>
72        <iterate buildpathref="WebAdmin.buildpath" target="tools-dist"/>
73        <iterate buildpathref="OmeroPy.buildpath" target="tools-dist"/>
74        <iterate buildpathref="OmeroJava.buildpath" target="tools-dist"/>
75        <iterate buildpathref="licenses.buildpath" target="tools-dist"/>
76        <iterate buildpathref="tools.buildpath" target="dist"/>
77    </target>
78
79    <target name="build-all" description="Build everything and copy to dist" depends="ivy-init">
80        <iterate buildpathref="all.buildpath" target="dist"/>
81        <antcall target="prepare-dist" inheritRefs="true" inheritAll="true"/>
82        <iterate buildpathref="tools.buildpath" target="build"/>
83        <iterate buildpathref="tools.buildpath" target="dist"/>
84    </target>
85
86    <target name="build-blitz" description="Build blitz and copy to dist/blitz" depends="ivy-init">
87        <iterate buildpathref="blitzserver.buildpath" target="dist"/>
88        <antcall target="prepare-dist" inheritRefs="true" inheritAll="true"/>
89        <!-- Must also build python since it provides our command lines -->
90        <iterate buildpathref="OmeroPy.buildpath" target="tools-dist"/>
91        <iterate buildpathref="tools.buildpath" target="dist"/>
92    </target>
93
94    <target name="build-ear" description="Build ear and copy to dist" depends="ivy-init">
95        <iterate buildpathref="appserver.buildpath" target="dist"/>
96        <!-- WORKAROUND: creating the blitz jar to make prepare-dist work-->
97        <iterate buildpathref="blitzserver.buildpath" target="install"/>
98        <antcall target="prepare-dist" inheritRefs="true" inheritAll="true"/>
99    </target>
100
101    <target name="build-webadmin" description="Build WebAdmin and copy to dist">
102        <antcall target="build-ear" inheritRefs="true" inheritAll="true"/>
103        <iterate buildpathref="WebAdmin.buildpath" target="tools-dist"/>
104        <iterate buildpathref="tools.buildpath" target="dist"/>
105    </target>
106
107    <target name="build-importer" description="Build importer and copy to dist/client">
108        <antcall target="build-ear" inheritRefs="true" inheritAll="true"/>
109        <iterate buildpathref="OmeroImporter.buildpath" target="tools-dist"/>
110        <iterate buildpathref="tools.buildpath" target="dist"/>
111    </target>
112
113    <target name="build-cpp" description="Build OmeroCpp bindings and copy to dist/lib">
114        <antcall target="build-blitz" inheritRefs="true" inheritAll="true"/>
115        <iterate buildpathref="OmeroCpp.buildpath" target="tools-dist"/>
116        <iterate buildpathref="tools.buildpath" target="dist"/>
117    </target>
118
119    <target name="build-java" description="Build OmeroJava bindings and copy to dist/client">
120        <antcall target="build-blitz" inheritRefs="true" inheritAll="true"/>
121        <iterate buildpathref="OmeroCpp.buildpath" target="tools-dist"/>
122        <iterate buildpathref="tools.buildpath" target="dist"/>
123    </target>
124
125    <target name="build-py" description="Build OmeroPy bindings and copy to dist/lib">
126        <antcall target="build-blitz" inheritRefs="true" inheritAll="true"/>
127        <!-- Currently has no logic, since build-blitz requires all of this -->
128    </target>
129
130    <target name="build-schema" description="Build new DB schema and copy to sql/" depends="ivy-init">
131        <iterate buildpathref="model.buildpath" target="clean"/>
132        <iterate buildpathref="dsl.buildpath" target="install"/>
133        <iterate buildpathref="model.buildpath" target="install"/>
134        <iterate buildpathref="model.buildpath" target="publish-schema"/>
135    </target>
136
137    <!--
138    Packaging
139    -->
140    <target name="zip" description="Zip the dist directory into ${product.name}-${omero.version}.zip">
141        <zip destfile="${product.name}-${omero.version}.zip">
142            <zipfileset dir="${dist.dir}" prefix="${product.name}-${omero.version}"
143                excludes="bin/omero"/>
144            <zipfileset dir="${dist.dir}" prefix="${product.name}-${omero.version}"
145                includes="bin/omero"
146                filemode="755"/>
147        </zip>
148    </target>
149
150    <target name="tar" description="Tar the dist directory into ${product-name}-${omero.version}.tar.bz2">
151        <tar destfile="${product.name}-${omero.version}.tar.bz2" compress="bzip2">
152            <zipfileset dir="${dist.dir}" prefix="${product.name}-${omero.version}"
153                excludes="bin/omero"/>
154            <zipfileset dir="${dist.dir}" prefix="${product.name}-${omero.version}"
155                includes="bin/omero"
156                filemode="755"/>
157        </tar>
158    </target>
159
160    <target name="deploy" description="Copy the dist/${product.name}.ear to $JBOSS_HOME/server/default/deploy" depends="ivy-init">
161        <iterate buildpathref="app.buildpath" target="deploy"/>
162    </target>
163
164    <!-- Internal target -->
165    <target name="prepare-dist" depends="ivy-init">
166            <mkdir dir="${dist.dir}/bin"/>
167            <copy todir="${dist.dir}/etc" overwrite="true">
168                <fileset dir="${omero.home}/etc">
169                    <exclude name="local.properties"/>
170                </fileset>
171            </copy>
172            <copy todir="${dist.dir}">
173                <fileset dir="${omero.home}">
174                    <include name="omero.class"/>
175                    <include name="components/antlib/**"/>
176                    <include name="sql/**"/>
177                </fileset>
178            </copy>
179
180            <mkdir dir="${dist.dir}/client"/>
181            <ivy:resolve file="${import.dir}/omero.ivy" type="jar" conf="client" settingsRef="ivy.toplevel"/>
182            <ivy:retrieve conf="client" pattern="${dist.dir}/client/[module]-[revision].[ext]" sync="true" log="quiet" settingsRef="ivy.toplevel"/>
183            <mkdir dir="${dist.dir}/lib/repository"/>
184            <ivy:resolve file="${import.dir}/omero.ivy" type="jar" conf="server" settingsRef="ivy.toplevel"/>
185            <ivy:retrieve conf="server" pattern="${dist.dir}/lib/repository/[module]-[revision].[ext]" sync="true" log="quiet" settingsRef="ivy.toplevel"/>
186            <ivy:resolve organisation="apache" module="ant" revision="${versions.ant}" inline="true" settingsRef="ivy.toplevel"/>
187            <ivy:retrieve pattern="${dist.dir}/lib/repository/[module]-[revision].[ext]" sync="true" log="quiet" settingsRef="ivy.toplevel"/>
188
189            <copy
190                file="${import.dir}/omero.xml"
191                tofile="${dist.dir}/build.xml"
192                overwrite="true" />
193            <copy
194                file="${import.dir}/omero.ivy"
195                tofile="${dist.dir}/omero.ivy"
196                overwrite="true" />
197
198    </target>
199
200    <target name="prepare-eclipse" description="Symlink (or copy) all lib/repository jars needed by each component" depends="ivy-init">
201        <ivy:resolve file="${import.dir}/omero.ivy" type="jar" conf="server" settingsRef="ivy.toplevel"/>
202        <ivy:retrieve pattern="${omero.home}/target/libs/[artifact].[ext]" log="quiet" symlink="true" settingsRef="ivy.toplevel"/>
203        <ivy:resolve file="${import.dir}/omero.ivy" type="jar" conf="client" settingsRef="ivy.toplevel"/>
204        <ivy:retrieve pattern="${omero.home}/target/libs/[artifact].[ext]" log="quiet" symlink="true" settingsRef="ivy.toplevel"/>
205        <ivy:resolve file="${import.dir}/omero.ivy" type="jar" conf="testing" settingsRef="ivy.toplevel"/>
206        <ivy:retrieve pattern="${omero.home}/target/libs/[artifact].[ext]" log="quiet" symlink="true" settingsRef="ivy.toplevel"/>
207        <iterate buildpathref="all.buildpath" target="prepare"/>
208        <iterate buildpathref="OmeroImporter.buildpath" target="prepare"/>
209        <iterate buildpathref="licenses.buildpath" target="prepare"/>
210    </target>
211
212    <target name="findbugs" description="Generates findbugs.xml and checkstyle.xml for all components" depends="ivy-init">
213       <iterate buildpathref="all.buildpath"   target="findbugs"/>
214       <iterate buildpathref="tools.buildpath" target="findbugs"/>
215    </target>
216
217    <target name="coverage" depends="prepare-eclipse"
218        description="Merge code coverage reports into single top-level report">
219        <path id="omero.classpath">
220                <fileset dir="${omero.home}/target/libs" />
221        </path>
222        <taskdef resource="emma_ant.properties" classpathref="omero.classpath" />
223        <emma>
224            <merge outfile="${target.dir}/coverage.es" >
225                <fileset dir="components" includes="**/target/coverage.emma,**/target/metadata.emma"/>
226            </merge>
227            <report sourcepath="${src.dir}" >
228                <fileset dir="${target.dir}" includes="coverage.es"/>
229                <html outfile="${target.dir}/coverage.html" />
230                <xml outfile="${target.dir}/coverage.xml" />
231            </report>
232        </emma>
233    </target>
234
235    <target name="setup">
236        <ant antfile="${omero.home}/components/antlib/resources/setup.xml" target="setup"/>
237    </target>
238
239    <target name="javadoc" description="Generate Javadocs for all components under dist/docs/api">
240        <mkdir dir="${dist.dir}/docs/api"/>
241        <patternset id="all.java.files">
242            <!-- Includes prefixed with "**" in order to pick up
243            tools/ components -->
244            <include name="src/**/*.java"/>
245            <include name="target/generated/src/**/*.java"/>
246            <exclude name="xxx/**"/>
247        </patternset>
248
249        <javadoc
250            failonerror="true"
251            Verbose="true"
252            maxmemory="${javadoc.maxmem}"
253            destdir="dist/docs/api"
254            author="true"
255            version="true"
256            use="true"
257            breakiterator="true"
258            windowtitle="OMERO (OME Remote Objects) Server">
259
260            <classpath>
261                <fileset dir="lib">
262                    <include name="**/*.jar"/>
263                </fileset>
264            </classpath>
265
266            <fileset dir="components/common/" defaultexcludes="yes">
267                <patternset refid="all.java.files"/>
268            </fileset>
269            <fileset dir="components/server/" defaultexcludes="yes">
270                <patternset refid="all.java.files"/>
271            </fileset>
272            <fileset dir="components/romio/" defaultexcludes="yes">
273                <patternset refid="all.java.files"/>
274            </fileset>
275            <fileset dir="components/rendering/" defaultexcludes="yes">
276                <patternset refid="all.java.files"/>
277            </fileset>
278                <fileset dir="components/client/" defaultexcludes="yes">
279                <patternset refid="all.java.files"/>
280            </fileset>
281            <!-- Skipping generated files for blitz. Just too many -->
282            <fileset dir="components/blitz/src" defaultexcludes="yes" includes="**/*.java"/>
283            <fileset dir="components/tools/WebAdmin" defaultexcludes="yes">
284                <patternset refid="all.java.files"/>
285            </fileset>
286            <fileset dir="components/tools/admin" defaultexcludes="yes">
287                <patternset refid="all.java.files"/>
288            </fileset>
289            <fileset dir="components/tools/licenses" defaultexcludes="yes">
290                <patternset refid="all.java.files"/>
291            </fileset>
292            <fileset dir="components/tools/OmeroJava" defaultexcludes="yes">
293                <patternset refid="all.java.files"/>
294            </fileset>
295
296            <doctitle><![CDATA[<h1> Omero API </h1>]]></doctitle>
297            <bottom><![CDATA[
298            <p><b><i>Copyright &#169; 2007 The University of Dundee. All Rights Reserved.</i></b></p>
299            ]]></bottom>
300
301            <tag name="DEV.TODO" scope="all" description="To do:"/>
302
303            <group title="A. Core System"
304                    packages="ome.api:ome.conditions*:ome.parameters*:ome.system*"/>
305            <group title="B. Model"
306                    packages="ome.model*"/>
307            <group title="C. Client Packages"
308                    packages="ome.client*:ome.adapters*:pojos*"/>
309            <group title="D. Server Packages"
310                    packages="ome.api.local*:ome.services*:ome.logic*:ome.tools*:ome.security*:ome.io*:ome.annotations*"/>
311            <group title="E. Blitz Server"
312                    packages="ome.services.blitz*"/>
313            <group title="E. Blitz Client"
314                    packages="omero*:omeroj*"/>
315            <group title="G. Rendering Engine"
316                    packages="omeis*"/>
317            <group title="H. Utilities"
318                    packages="ome.util*:ome.testing*"/>
319            <group title="I. Deprecated"
320                    packages="ome.dynamic*:ome.rules*"/>
321
322            <link href="http://java.sun.com/j2se/1.5/docs/api/"/>
323            <link href="http://www.springframework.org/docs/api/"/>
324            <link href="http://www.hibernate.org/hib_docs/v3/api/"/>
325            <link href="http://aopalliance.sourceforge.net/doc/"/>
326            <link href="http://lucene.apache.org/java/2_2_0/api"/>
327
328        </javadoc>
329
330    </target>
331
332    <target name="ivy-hudson" depends="ivy-init">
333        <ivy:resolve settingsRef="ivy.toplevel"
334            file="${omero.home}/ivy.xml" type="zip" log="quiet"/>
335        <ivy:publish settingsRef="ivy.toplevel"
336            artifactspattern="${omero.home}/OMERO.server-${omero.version}.zip"
337            srcivypattern="${omero.home}/ivy.xml"
338            resolver="omero-resolver"
339            pubrevision="${omero.version}"
340            pubdate="${now}"
341            status="integration"
342            overwrite="true"/>
343            <!-- This causes the ivy file to be modified -->
344            <!--forcedeliver="true"-->
345        <ivy:install settingsRef="ivy.toplevel"
346            organisation="omero" module="main" revision="${omero.version}"
347            from="omero-resolver" to="hudson-repository"
348            transitive="true" overwrite="true"/>
349    </target>
350
351</project>
Note: See TracBrowser for help on using the browser.

Download in other formats:

  • Plain Text
  • Original Format

Trac Powered

Powered by Trac 0.11
By Edgewall Software.

Visit the Trac open source project at
http://trac.edgewall.org/