]> git.argeo.org Git - gpl/argeo-slc.git/blob - plugins/maven-argeo-pde-plugin/src/main/scripts/argeo-pde.build.xml
c2fe0b17edc946d453925c19e161ec3d0d9542c3
[gpl/argeo-slc.git] / plugins / maven-argeo-pde-plugin / src / main / scripts / argeo-pde.build.xml
1 <project>
2 <!--
3 Defaults
4 -->
5
6 <!-- Maven project basedir -->
7 <property name="projectDirectory" location="${basedir}" />
8 <!-- Maven build dir -->
9 <property name="project.build.directory" location="${projectDirectory}/target" />
10 <!-- Maven dependency plugin dir -->
11 <property name="dependencyDir" location="${project.build.directory}/dependency" />
12 <!-- Arguments passed to Eclipse ant -->
13 <property name="eclipseAntArgs" value="" />
14 <!-- Additional arguments passed to Eclipse build script -->
15 <property name="buildScriptProperties" value="" />
16
17 <!--
18 Argeo PDE folders
19 -->
20 <!-- Argeo PDE plugin dir -->
21 <property name="argeo-pde.dir" location="${project.build.directory}/argeo-pde" />
22 <!-- Temporary folder used by Eclipse build -->
23 <property name="buildTempFolder" location="${argeo-pde.dir}/temp" />
24 <!-- Eclipse Builder -->
25 <!--<property name="pdeBuilder" location="${argeo-pde.dir}/pdeBuilder" />-->
26
27 <!-- Eclipse Target -->
28 <property name="eclipseTarget" location="${argeo-pde.dir}/eclipseTarget" />
29 <property name="pdeBuilder" location="${eclipseTarget}" />
30
31 <!-- TODO: remove this since we build only features? -->
32 <available file="${projectDirectory}/plugin.xml" property="elementType" value="plugin" />
33 <available file="${projectDirectory}/feature.xml" property="elementType" value="feature" />
34
35 <!-- Destination dirs -->
36 <property name="argeo-pde.destinationDir" location="${argeo-pde.dir}/destination" />
37 <property name="pluginDestination" location="${argeo-pde.destinationDir}/plugins" />
38 <property name="featureDestination" location="${argeo-pde.destinationDir}/features" />
39
40 <!-- Source dirs -->
41 <property name="argeo-pde.sourceDir" location="${argeo-pde.dir}/source" />
42 <property name="buildDirectory" location="${argeo-pde.sourceDir}" />
43
44
45 <!-- TODO: make it more generic. Site file template -->
46 <property name="siteTemplate" location="${projectDirectory}/site.template" />
47
48 <!-- TODO: put it under argeo-pde. Product build properties -->
49 <property name="buildConfiguration" value="buildConfiguration" />
50 <property name="buildConfiguration.dir" location="${projectDirectory}/${buildConfiguration}" />
51
52
53
54 <!--
55 Element build properties
56 -->
57
58 <!--
59 TARGET Build Element
60 -->
61 <target name="buildElement" depends="init" description="Builds an element (plugin or feature)">
62 <fail message="Property buildScriptTargets has to be set" unless="buildScriptTargets" />
63
64 <mkdir dir="${pluginDestination}" />
65 <mkdir dir="${featureDestination}" />
66
67 <!-- Copy to source -->
68 <property name="sourceBaseDir" location="${projectDirectory}/../.." />
69 <copy todir="${argeo-pde.sourceDir}">
70 <fileset dir="${sourceBaseDir}">
71 <include name="plugins/**" />
72 <include name="features/**" />
73 <exclude name="**/target/**" />
74 <exclude name="**/.svn/**" />
75 </fileset>
76 </copy>
77
78 <property name="elementBuildScript" location="${buildDirectory}/${elementType}s/${elementId}/build.xml" />
79
80 <eclipseAnt antfile="${ant.file}" antargs="eclipse.generateScripts -DpdeBuilder=${pdeBuilder} -DpluginPath=${dependencyDir} -DprojectDirectory=${projectDirectory} -DeclipseBuildDir=${eclipseBuildDir} -DelementId=${elementId} -DbuildDirectory=${buildDirectory}" />
81 <eclipseAnt antfile="${elementBuildScript}" antargs="${buildScriptTargets} -Dplugin.destination=${pluginDestination} -Dfeature.destination=${featureDestination} -DelementId=${elementId} -DbuildTempFolder=${buildTempFolder} -Dtemp.folder=${buildTempFolder}/temp.folder -Dfeature.temp.folder=${buildTempFolder}/feature.temp.folder ${buildScriptProperties}" />
82
83 <copy todir="${project.build.directory}">
84 <fileset dir="${featureDestination}">
85 <include name="*.zip" />
86 </fileset>
87 <mergemapper to="${elementId}.zip" />
88 </copy>
89
90 <!-- Update site -->
91 <copy tofile="${project.build.directory}/site.xml" file="${siteTemplate}">
92 <filterset begintoken="$${" endtoken="}">
93 <filtersfile file="${buildDirectory}/finalFeaturesVersions.properties" />
94 </filterset>
95 </copy>
96 <zip destfile="${project.build.directory}/${elementId}-updatesite.zip">
97 <fileset dir="${project.build.directory}">
98 <include name="plugins/*.jar" />
99 <include name="features/*.jar" />
100 <include name="site.xml" />
101 </fileset>
102 </zip>
103 </target>
104
105 <!--
106 TARGET Build Product
107 -->
108 <target name="buildProduct" depends="init" description="Builds a product">
109 <!-- Load provided build.properties to leave a chance to override -->
110 <property file="${buildConfiguration.dir}/build.properties" />
111 <!-- Set default properties -->
112 <property name="archivePrefix" value="${elementId}" />
113 <property name="buildId" value="${archivePrefix}" />
114 <property name="buildLabel" value="${archivePrefix}" />
115 <property name="collectingFolder" value="${archivePrefix}" />
116 <property name="skipFetch" value="true" />
117 <property name="skipMaps" value="true" />
118 <property name="runPackager" value="true" />
119
120 <!-- Find PDE build file -->
121 <pathconvert pathsep="" property="productBuildFile">
122 <path>
123 <fileset dir="${pdeBuilder}/plugins">
124 <include name="org.eclipse.pde.build_*/scripts/productBuild/productBuild.xml" />
125 </fileset>
126 </path>
127 </pathconvert>
128 <echo message="productBuildFile=${productBuildFile}" />
129
130 <!-- Copy sources -->
131 <property name="buildDirectory" location="${project.build.directory}/productBuild" />
132 <mkdir dir="${buildDirectory}" />
133 <copy todir="${buildDirectory}" includeemptydirs="true" verbose="true">
134 <fileset dir="${projectDirectory}/../..">
135 <include name="plugins/**" />
136 <include name="features/**" />
137 <exclude name="**/.svn/**" />
138 <exclude name="**/target/**" />
139 </fileset>
140 </copy>
141
142 <!-- Execute -->
143 <eclipseAnt antfile="${productBuildFile}" antargs="-Dbuilder=${buildConfiguration.dir} -DbuildDirectory=${buildDirectory} -DbaseLocation=${eclipseTarget} -Dbase=${base} -DpluginPath=${dependencyDir} -DarchivePrefix=${archivePrefix} -DbuildLabel=${buildLabel} -DbuildId=${buildId} -DcollectingFolder=${collectingFolder} -DskipFetch=${skipFetch} -DskipMaps=${skipMaps} -DrunPackager=${runPackager}" />
144
145 <!-- Copy to target dir -->
146 <copy todir="${project.build.directory}">
147 <fileset dir="${buildDirectory}/${collectingFolder}">
148 <include name="*.zip" />
149 </fileset>
150 <globmapper from="${archivePrefix}-*" to="${elementId}-*" />
151 </copy>
152 </target>
153
154 <!--
155 TARGET Clean
156 -->
157 <target name="clean" depends="init,clean.elementBuildScript" description="Cleans the generated resources">
158 <delete dir="${projectDirectory}/workspace" verbose="true" />
159 <delete file="${projectDirectory}/javaCompiler...args" verbose="true" />
160 <delete>
161 <fileset dir="${projectDirectory}/../..">
162 <include name="final*.properties" />
163 <include name="assemble*.xml" />
164 <include name="package*.xml" />
165 </fileset>
166 </delete>
167 </target>
168
169 <target name="clean.elementBuildScript" if="elementBuildScript.exists">
170 <ant antfile="${elementBuildScript}" target="clean" />
171 <delete file="${elementBuildScript}" verbose="true" />
172 </target>
173
174 <!--
175 TARGET eclipseTarget
176 -->
177 <target name="eclipseTarget" description="Creates an Eclipse target location based on the dependencies">
178 <taskdef resource="net/sf/antcontrib/antlib.xml" />
179 <for param="dir">
180 <dirset dir="${project.build.directory}/dependency">
181 <include name="*" />
182 </dirset>
183 <sequential>
184 <!--
185 <move todir="@{dir}" failonerror="false">
186 <fileset dir="@{dir}/eclipse">
187 <include name="**" />
188 </fileset>
189 </move>
190 <delete dir="@{dir}/eclipse" failonerror="false" quiet="true" />
191 -->
192 <copy todir="${eclipseTarget}" failonerror="false">
193 <fileset dir="@{dir}">
194 <include name="plugins/**" />
195 <include name="features/**" />
196 </fileset>
197 </copy>
198 <copy todir="${eclipseTarget}" failonerror="false">
199 <fileset dir="@{dir}/eclipse">
200 <include name="plugins/**" />
201 <include name="features/**" />
202 </fileset>
203 </copy>
204 </sequential>
205 </for>
206
207 <!-- Copy configuration from SDK -->
208 <for param="dir">
209 <dirset dir="${project.build.directory}/dependency">
210 <include name="eclipse-sdk-*" />
211 </dirset>
212 <sequential>
213 <copy todir="${eclipseTarget}" failonerror="false">
214 <fileset dir="@{dir}/eclipse">
215 <include name="configuration/**" />
216 </fileset>
217 </copy>
218 </sequential>
219 </for>
220 </target>
221
222 <!--
223 COMMON UTILITIES
224 -->
225 <target name="init">
226 <!-- Init Base
227 <property name="base" location="${eclipseBuildDir}" />
228 <property name="baseLocation" location="${base}/eclipse" />
229 <property name="pdeBuilder" location="${eclipseBuildDir}/argeo-slc-pde" />
230 <property name="pluginPathBase" location="${eclipseBuildDir}/pluginPath" />
231 -->
232 <path id="pdeBuilder.launcher.classpath">
233 <fileset dir="${pdeBuilder}/plugins">
234 <include name="org.eclipse.equinox.launcher_*.jar" />
235 </fileset>
236 </path>
237
238 <!-- Log properties -->
239 <echo message="basedir=${basedir}" />
240 <echo message="ant.file=${ant.file}" />
241 <echo message="projectDirectory=${projectDirectory}" />
242
243 <!--<echo message="eclipseBuildDir=${eclipseBuildDir}" />
244 <echo message="base=${base}" />
245 <echo message="baseLocation=${baseLocation}" />
246 <echo message="pdeBuilder=${pdeBuilder}" />
247 <echo message="localBuildDir=${localBuildDir}" />
248 <echo message="pluginPathBase=${pluginPathBase}" />
249 -->
250 <echo message="pdeBuilder=${pdeBuilder}" />
251 <echo message="eclipseTarget=${eclipseTarget}" />
252
253 <echo message="elementType=${elementType}" />
254 <echo message="elementId=${elementId}" />
255 <echo message="elementBuildScript=${elementBuildScript}" />
256 <echo message="buildScriptTargets=${buildScriptTargets}" />
257 <echo message="buildScriptProperties=${buildScriptProperties}" />
258
259 <echo message="eclipseAntArgs=${eclipseAntArgs}" />
260
261 <echo message="buildConfiguration.dir=${buildConfiguration.dir}" />
262
263 <available file="${elementBuildScript}" property="elementBuildScript.exists" value="true" />
264 </target>
265 <!--
266 <target name="setPluginPath">
267 <mkdir dir="${dependencyDir}" />
268 <pathconvert property="pluginPath">
269 <path>
270 <pathelement location="${dependencyDir}" />
271 <dirset dir="${pluginPathBase}">
272 <include name="*" />
273 </dirset>
274 </path>
275 </pathconvert>
276 <echo message="pluginPath=${pluginPath}" />
277 </target>
278 -->
279 <!-- TARGETS TO BE CALLED WITH ANT ECLIPSE -->
280 <target name="eclipse.generateScripts" depends="init">
281 <fail message="Property elementType has to be set" unless="elementType" />
282 <eclipse.buildScript elements="${elementType}@${elementId}" buildDirectory="${buildDirectory}" baseLocation="${eclipseTarget}" outputUpdateJars="true" generateVersionsLists="true" pluginPath="${dependencyDir}" />
283 </target>
284
285 <!-- MACRODEFS -->
286 <macrodef name="eclipseAnt">
287 <attribute name="antfile" />
288 <attribute name="antargs" />
289 <sequential>
290 <echo message="Call Eclipse Ant for file @{antfile} with args ${eclipseAntArgs} @{antargs}" />
291 <java fork="true" classname="org.eclipse.core.launcher.Main" failonerror="true">
292 <classpath refid="pdeBuilder.launcher.classpath" />
293 <arg line="-data ${argeo-pde.dir}/workspace" />
294 <arg line="-application org.eclipse.ant.core.antRunner" />
295 <arg line="-buildfile @{antfile}" />
296 <arg line="${eclipseAntArgs}" />
297 <arg line="@{antargs}" />
298 </java>
299 </sequential>
300 </macrodef>
301 </project>