root/trunk-eclipse/art-model-builder/build.xml

Revision 1104, 15.5 kB (checked in by tstolpma, 4 years ago)

Initial version delivered to Achievo.

Line 
1<?xml version="1.0"?>
2
3<project name="art-modelbuilder" default="dist" basedir=".">
4
5  <!-- Include environment. -->
6  <property environment="env" />
7  <property file="config/version.properties" />
8
9  <target name="init" description="Project Initialization" unless="init.done">
10
11    <property name="build.environment" value="environment.properties" />
12
13    <property file="config/${build.environment}" />
14
15    <!-- TODO: make this configurable -->
16    <property name="debug" value="true" />
17
18    <!-- Determine Operating System relevant parameters. -->
19    <condition property="opt.root" value="${opt.root.win}">
20      <os family="windows" />
21    </condition>
22    <condition property="opt.root" value="${opt.root.unix}">
23      <os family="unix" />
24    </condition>
25    <condition property="eclipse.os" value="windows">
26      <os family="windows" />
27    </condition>
28    <condition property="eclipse.os" value="linux">
29      <os family="unix" />
30    </condition>
31
32    <!-- Include directory and file names. -->
33    <property file="config/${opt.external.properties}" />
34    <property file="config/structure.properties" />
35
36    <condition property="vmarg-endorsed-dir" value="-Djava.endorsed.dirs=${path.xerces}">
37      <equals arg1="${ant.java.version}" arg2="1.4"/>
38    </condition>
39    <property name="vmarg-endorsed-dir" value=""/>
40
41    <!-- Needed junit archives. -->
42    <fileset id="junit.jars" dir="${path.junit}">
43      <include name="junit.jar" />
44    </fileset>
45
46    <path id="project.classpath">
47      <pathelement path="${jar.emf-ecore}" />
48      <pathelement path="${jar.emf-ecore-xmi}" />
49      <pathelement path="${jar.emf-common}" />
50      <pathelement location="${jar.equinox-launcher}" />
51    </path>
52
53    <path id="eclipse.classpath">
54      <pathelement location="${jar.equinox-launcher}" />
55    </path>
56
57    <property name="emf-genmodel.application"
58              value="org.eclipse.xsd.ecore.importer.XSD2GenModel" />
59
60    <mkdir dir="${gen.model.dir}" />
61    <mkdir dir="${gen.workspace.dir}" />
62    <mkdir dir="${gen.configuration.dir}" />
63    <mkdir dir="${gen.properties.dir}" />
64    <mkdir dir="${plugins.dir}" />
65    <mkdir dir="${test.classes.dir}" />
66    <mkdir dir="${unittest.result.dir}" />
67    <mkdir dir="${dist.dir}" />
68
69    <property name="init.done" value="true" />
70
71  </target>
72
73  <target name="clean" depends="init">
74    <delete dir="build" />
75    <mkdir dir="${plugins.dir}/${art-usecase.project.name}" />
76    <delete>
77      <fileset dir="${plugins.dir}/${art-usecase.project.name}">
78        <exclude name=".project"/>
79        <exclude name=".classpath"/>
80        <exclude name=".settings"/>
81      </fileset>
82    </delete>
83    <mkdir dir="${plugins.dir}/${art-requirement.project.name}" />
84    <delete>
85      <fileset dir="${plugins.dir}/${art-requirement.project.name}">
86        <exclude name=".project"/>
87        <exclude name=".classpath"/>
88        <exclude name=".settings"/>
89      </fileset>
90    </delete>
91
92    <mkdir dir="${gen.model.dir}" />
93    <mkdir dir="${gen.workspace.dir}" />
94    <mkdir dir="${gen.properties.dir}" />
95    <mkdir dir="${plugins.dir}" />
96    <mkdir dir="${test.classes.dir}" />
97    <mkdir dir="${unittest.result.dir}" />
98    <mkdir dir="${dist.dir}" />
99  </target>
100
101  <target name="patch-test" depends="init, extract-test">
102    <patch-manifest plugin-name="${art-requirement.project.name}"
103                    version="${art-usecase-version}" />
104  </target>
105
106  <target name="extract-test" depends="init">
107    <extract-svn-information file="${art-usecase.xsd}"
108                             name-prefix="art-usecase" />
109  </target>
110
111  <target name="generate-usecase" depends="init">
112    <extract-svn-information file="${art-usecase.xsd}"
113                             name-prefix="art-usecase" />
114    <ecore-generate-genmodel xsd="${art-usecase.xsd}"
115                             genmodel="${art-usecase.genmodel}"
116                             project-name="${art-usecase.project.name}"
117                             plugin-id="${art-usecase.package}" />
118    <patch-genmodel genmodel="${art-usecase.genmodel}" package-name="${model.package.name}" prefix="Usecase" />
119    <patch-ecore package-name="uc" newName="usecase" />
120    <ecore-generate-model genmodel="${art-usecase.genmodel}"
121                          project-name="${art-usecase.project.name}" />
122    <patch-manifest plugin-name="${art-usecase.project.name}"
123                    version="${art-usecase-version}" />
124    <patch-classpath plugin-name="${art-usecase.project.name}" />
125    <patch-plugin-properties plugin-name="${art-usecase.project.name}" />
126    <mkdir dir="${art-usecase.classes.dir}" />
127    <javac srcdir="${art-usecase.java.dir}"
128           destdir="${art-usecase.classes.dir}"
129           debug="${debug}"
130           classpathref="project.classpath">
131    </javac>
132    <mkdir dir="${art-usecase.runtime.dir}" />
133    <jar jarfile="${art-usecase.runtime.jar}">
134      <fileset dir="${art-usecase.classes.dir}" />
135    </jar>
136    <gen-javadoc src-dir="${art-usecase.java.dir}" doc-dir="${plugins.dir}/${art-usecase.project.name}/doc" />
137  </target>
138
139  <target name="generate-requirement" depends="init">
140    <extract-svn-information file="${art-requirement.xsd}"
141                             name-prefix="art-requirement" />
142    <ecore-generate-genmodel xsd="${art-requirement.xsd}"
143                             genmodel="${art-requirement.genmodel}"
144                             project-name="${art-requirement.project.name}"
145                             plugin-id="${art-requirement.package}" />
146    <patch-genmodel genmodel="${art-requirement.genmodel}" package-name="${model.package.name}" prefix="Requirement"/>
147    <patch-ecore package-name="req" newName="requirement" />
148    <ecore-generate-model genmodel="${art-requirement.genmodel}"
149                          project-name="${art-requirement.project.name}" />
150    <patch-manifest plugin-name="${art-requirement.project.name}"
151                    version="${art-requirement-version}" />
152    <patch-classpath plugin-name="${art-requirement.project.name}" />
153    <patch-plugin-properties plugin-name="${art-requirement.project.name}" />
154    <mkdir dir="${art-requirement.classes.dir}" />
155    <javac srcdir="${art-requirement.java.dir}"
156           destdir="${art-requirement.classes.dir}"
157           debug="${debug}"
158           classpathref="project.classpath">
159    </javac>
160    <mkdir dir="${art-requirement.runtime.dir}" />
161    <jar jarfile="${art-requirement.runtime.jar}">
162      <fileset dir="${art-requirement.classes.dir}" />
163    </jar>
164    <gen-javadoc src-dir="${art-requirement.java.dir}" doc-dir="${plugins.dir}/${art-requirement.project.name}/doc" />
165  </target>
166
167  <target name="compile-test" depends="init">
168    <javac srcdir="${src.test.java.dir}"
169           destdir="${test.classes.dir}"
170           classpathref="project.classpath">
171      <classpath>
172        <pathelement path="${art-usecase.classes.dir}" />
173        <pathelement path="${art-requirement.classes.dir}" />
174      </classpath>
175    </javac>
176  </target>
177
178  <target name="unit-test" depends="compile-test">
179    <junit printsummary="true">
180      <classpath>
181        <pathelement path="${test.classes.dir}" />
182        <pathelement path="${art-usecase.classes.dir}" />
183        <pathelement path="${art-requirement.classes.dir}" />
184        <path refid="project.classpath" />
185      </classpath>
186
187      <formatter type="xml" />
188      <test name="de.achievo.art.model.test.AllTests"
189            outfile="${unittest.result.dir}/${unittest.result.file}" />
190    </junit>
191    <junitreport todir="${unittest.result.dir}">
192      <fileset dir="${unittest.result.dir}"
193               includes="${unittest.result.file}.xml" />
194      <report todir="${unittest.result.dir}" />
195    </junitreport>
196  </target>
197
198  <target name="generate" depends="init, generate-requirement, generate-usecase">
199  </target>
200
201  <target name="dist" depends="generate">
202
203    <mkdir dir="${gen.plugins.dir}/${art-usecase.package}_${art-usecase-version}" />
204    <copy todir="${gen.plugins.dir}/${art-usecase.package}_${art-usecase-version}">
205      <fileset dir="${plugins.dir}/${art-usecase.project.name}">
206        <include name="**/*" />
207        <exclude name="classes/**/*" />
208        <exclude name="doc/**/*" />
209        <exclude name="src/**/*" />
210        <exclude name=".project" />
211        <exclude name="build.properties" />
212      </fileset>
213    </copy>
214    <zip destfile="${dist.dir}/${art-usecase.package}_${art-usecase-version}.zip">
215      <fileset dir="${gen.plugins.dir}">
216        <include name="${art-usecase.package}_${art-usecase-version}/**/*" />
217      </fileset>
218    </zip>
219
220    <mkdir dir="${gen.plugins.dir}/${art-requirement.package}_${art-requirement-version}" />
221    <copy todir="${gen.plugins.dir}/${art-requirement.package}_${art-requirement-version}">
222      <fileset dir="${plugins.dir}/${art-requirement.project.name}">
223        <include name="**/*" />
224        <exclude name="classes/**/*" />
225        <exclude name="doc/**/*" />
226        <exclude name="src/**/*" />
227        <exclude name=".project" />
228        <exclude name="build.properties" />
229      </fileset>
230    </copy>
231    <zip destfile="${dist.dir}/${art-requirement.package}_${art-requirement-version}.zip">
232      <fileset dir="${gen.plugins.dir}">
233        <include name="${art-requirement.package}_${art-requirement-version}/**/*" />
234      </fileset>
235    </zip>
236  </target>
237
238  <target name="complete-rebuild"
239          depends="clean, dist"
240          description="clean rebuild and tests" />
241
242  <macrodef name="ecore-generate-genmodel">
243    <attribute name="xsd" />
244    <attribute name="genmodel" />
245    <attribute name="project-name" />
246    <attribute name="plugin-id" />
247    <sequential>
248      <java classname="org.eclipse.core.launcher.Main"
249            fork="true"
250            failonerror="true">
251        <classpath refid="eclipse.classpath" />
252        <jvmarg line="-Xmx512M -Djava.compiler=NONE" />
253        <jvmarg line="${vmarg-endorsed-dir}" />
254        <arg line="-data ${gen.workspace.dir}" />
255        <arg line="-configuration ${gen.configuration.dir}" />
256        <arg line="-noupdate" />
257        <arg line="-application ${emf-genmodel.application}" />
258        <arg line="@{xsd}" />
259        <arg line="@{genmodel}" />
260        <arg line="-copyright 'Copyright 2008 verit Informationssysteme GmbH. All rights reserved.'" />
261        <arg line="-modelProject  ${plugins.dir}/@{project-name} src" />
262        <arg line="-modelPluginID @{plugin-id}" />
263      </java>
264      <basename property="model.name" file="@{genmodel}" />
265      <delete dir="${gen.workspace.dir}" />
266    </sequential>
267  </macrodef>
268
269  <macrodef name="patch-ecore">
270    <attribute name="package-name" />
271    <attribute name="newName" />
272    <sequential>
273      <xslt style="${xsl.dir}/patch-ecore.xsl"
274            force="true"
275            in="${gen.model.dir}/@{package-name}.ecore"
276            out="${gen.model.dir}/@{package-name}.ecore.tmp">
277        <param name="newName" expression="@{newName}" />
278      </xslt>
279      <move tofile="${gen.model.dir}/@{package-name}.ecore"
280            file="${gen.model.dir}/@{package-name}.ecore.tmp" />
281    </sequential>
282  </macrodef>
283
284  <macrodef name="patch-genmodel">
285    <attribute name="genmodel" />
286    <attribute name="package-name" />
287    <attribute name="prefix" />
288    <sequential>
289      <xslt style="${xsl.dir}/patch-genmodel.xsl"
290            force="true"
291            in="@{genmodel}"
292            out="@{genmodel}.tmp">
293        <param name="packageName" expression="@{package-name}" />
294        <param name="prefix" expression="@{prefix}" />
295      </xslt>
296      <move tofile="@{genmodel}"
297            file="@{genmodel}.tmp" />
298    </sequential>
299  </macrodef>
300
301  <macrodef name="extract-svn-information">
302    <attribute name="file" />
303    <attribute name="name-prefix" />
304    <sequential>
305      <xslt style="${xsl.dir}/extract-svn-information.xsl"
306            force="true"
307            in="@{file}"
308            out="${gen.properties.dir}/@{name-prefix}-svn.properties">
309        <param name="namePrefix" expression="@{name-prefix}" />
310      </xslt>
311      <property file="${gen.properties.dir}/@{name-prefix}-svn.properties" />
312    </sequential>
313  </macrodef>
314
315  <macrodef name="patch-manifest">
316    <attribute name="plugin-name" />
317    <attribute name="version" />
318    <sequential>
319      <delete file="../@{plugin-name}/META-INF/MANIFEST.tmp" quiet="true" />
320      <copy file="../@{plugin-name}/META-INF/MANIFEST.MF"
321            tofile="../@{plugin-name}/META-INF/MANIFEST.tmp"
322            filtering="true">
323        <filterset begintoken="Bundle-" endtoken=": 1.0.0">
324          <filter token="Version" value="Bundle-Version: @{version}" />
325        </filterset>
326      </copy>
327      <move file="../@{plugin-name}/META-INF/MANIFEST.tmp"
328            tofile="../@{plugin-name}/META-INF/MANIFEST.MF"
329            filtering="true" />
330    </sequential>
331  </macrodef>
332
333  <macrodef name="patch-classpath">
334    <attribute name="plugin-name" />
335    <sequential>
336      <xslt style="${xsl.dir}/patch-classpath.xsl"
337            force="true"
338            in="../@{plugin-name}/.classpath"
339            out="../@{plugin-name}/.classpath.tmp">
340        <param name="version" expression="@{version}" />
341      </xslt>
342      <move tofile="../@{plugin-name}/.classpath"
343            file="../@{plugin-name}/.classpath.tmp" />
344    </sequential>
345  </macrodef>
346
347  <macrodef name="patch-plugin-properties">
348    <attribute name="plugin-name" />
349    <sequential>
350      <replace file="../@{plugin-name}/plugin.properties"
351               token="www.example.org"
352               value="verit Informationssysteme GmbH" />
353      <replace file="../@{plugin-name}/build.properties"
354               token="model"
355               value="classes" />
356    </sequential>
357  </macrodef>
358
359  <macrodef name="ecore-generate-model">
360    <attribute name="genmodel" />
361    <attribute name="project-name" />
362    <sequential>
363      <java classname="org.eclipse.core.launcher.Main"
364            fork="true"
365            failonerror="true">
366        <classpath refid="eclipse.classpath" />
367        <jvmarg line="-Xmx512M -Djava.compiler=NONE" />
368        <jvmarg line="${vmarg-endorsed-dir}" />
369        <arg line="-data ${gen.workspace.dir}" />
370        <arg line="-configuration ${gen.configuration.dir}" />
371        <arg line="-noupdate" />
372        <arg line="-application org.eclipse.emf.codegen.ecore.Generator" />
373        <arg line="-projects @{project-name}" />
374        <arg line="-model" />
375        <arg line="@{genmodel}" />
376      </java>
377      <zip destfile="${plugins.dir}/@{project-name}/src.zip">
378        <fileset dir="${plugins.dir}/@{project-name}/src" />
379      </zip>
380      <delete dir="${gen.workspace.dir}" />
381    </sequential>
382  </macrodef>
383
384  <macrodef name="gen-javadoc">
385    <attribute name="src-dir" />
386    <attribute name="doc-dir" />
387    <sequential>
388      <javadoc destdir="@{doc-dir}" packagenames="*" verbose="false">
389        <sourcepath location="@{src-dir}" />
390        <doctitle>
391          <![CDATA[<h1>ART Ecore Model Reference</h1>]]></doctitle>
392      <bottom>
393        <![CDATA[<i>Copyright &#169; 2008 verit Informationssysteme GmbH. All Rights Reserved.</i>]]></bottom>
394    <tag name="generated" scope="all" enabled="false" />
395    <tag name="ordered" scope="all" enabled="false" />
396    <tag name="model" scope="all" enabled="false" />
397    <classpath refid="project.classpath" />
398  </javadoc>
399  <zip destfile="@{doc-dir}/../doc.zip">
400    <fileset dir="@{doc-dir}" />
401  </zip>
402</sequential>
403</macrodef>
404</project>
Note: See TracBrowser for help on using the browser.