-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathbuild.xml
242 lines (185 loc) · 12.6 KB
/
build.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
<?xml version="1.0" encoding="UTF-8"?>
<project name="JavaProjects" xmlns:ac="antlib:net.sf.antcontrib" >
<description>JavaProjects Root build file</description>
<!-- Can't live without antcontrib -->
<typedef resource="net/sf/antcontrib/antlib.xml"
uri="antlib:net.sf.antcontrib"
classpath= "${ant.file.JavaProjects}/../ant-contrib-1.0b3.jar"
/>
<typedef resource="pyAntTasks.properties">
<classpath>
<pathelement location="${ant.file.JavaProjects}/../pyAntTasks-1.3.3.jar"/>
</classpath>
</typedef>
<!-- First we set the shared project root directory "shared.project.root" -->
<!-- We derive it from the location of this build file together with -->
<!-- the relative path to our shared ant directory: -->
<property name="relative.shared.ant.dir" value="hmibuild"/>
<!-- First turn \ into / -->
<ac:propertyregex property="ant.file.path"
input="${ant.file.JavaProjects}"
regexp="[\\/]"
replace="/"
global="true"
/>
<!-- Set shared.project.root to the part of ant.file.path before ${relative.shared.ant.dir} -->
<ac:propertyregex property="shared.project.root"
input="${ant.file.path}"
regexp="/${relative.shared.ant.dir}.*"
replace=""
casesensitive="true"
override="false"
global="true"
/>
<property environment="env"/>
<!-- minimum required ant version -->
<property name="ant.version.required" value="1.8.0"/>
<!-- read a user specific properties file, if available -->
<property name="user.properties.dir" value="${user.home}" />
<property name="user.properties.file" value="${user.properties.dir}/hmi.build.properties"/>
<available file="${user.properties.file}" property="user.properties.file.available" />
<!--echo message="user.properties.file= ${user.properties.file}"/-->
<property file="${user.properties.file}" />
<property name="user.keyfile" value="${user.home}/.ssh/id_rsa"/>
<property name="publish.user.name" value="${user.name}"/>
<target name="tu" >
<echo message="user.home= ${user.home} publish.user.name=${publish.user.name} user.name=${user.name} private key location = ${user.keyfile} userprops=${user.properties.file.available}"/>
</target>
<!-- Here we configure the root of our repository when in filesystem mode.
By default this is relative to the root of our ant hmibuild installation.
However this can be overwritten through commandline or by changing the parameters below, so that you can place your local copy of the repository somewhere else.
e.g.: -Drepository.mode=filesystem -Drepository.filesystem.root=C:/dev/repository -Dpublish.resolver=hmicore.filesystem.repository -->
<property name="repository.filesystem.root" value="${shared.project.root}/repository"/> <!-- Relative path -->
<!--property name="filesystem.root" value="C:/dev/repository"/--> <!-- Absolute path -->
<!-- Next we define a number of "shared" places. Paths that refer to the repository can be absolute or relative, others can only be relative (e.g. the resource dirs) -->
<!-- shared.project.dir is a place that includes items like the shared repository -->
<property name="projects.dir.name" value="Projects"/>
<property name="projects.dir" value="${repository.filesystem.root}/${projects.dir.name}"/>
<property name="projects.repository" value="${projects.dir}/repository"/>
<!-- hmi.shared.project.dir is a place that includes items like the hmi repository. (as well as the HMI source code) -->
<property name="hmi.shared.dir.name" value="hmirepo"/>
<property name="hmi.shared.dir" value="${repository.filesystem.root}/${hmi.shared.dir.name}"/>
<property name="soa.shared.dir.name" value="soashared"/>
<property name="soa.shared.dir" value="${repository.filesystem.root}/${soa.shared.dir.name}"/>
<property name="asap.shared.dir.name" value="asap-project"/>
<property name="asap.shared.dir" value="${repository.filesystem.root}/${asap.shared.dir.name}"/>
<!-- asap.resources is a place that includes items like the Humanoid resources for asap-->
<property name="asap.resources.dir.name" value="AsapResource"/>
<property name="asap.resources" value="${shared.project.root}/${asap.resources.dir.name}"/>
<!-- shared.resources is a place that includes items like the Humanoid resources -->
<property name="shared.resources.dir.name" value="HmiResource"/>
<property name="shared.resources" value="${shared.project.root}/${shared.resources.dir.name}"/>
<property name="hmi.build.dir.name" value="hmibuild"/>
<property name="hmi.build.dir" value="${shared.project.root}/${hmi.build.dir.name}"/>
<!-- shared.ant.dir is the place where this build file resides, and acts as the anchor for other build files, templates, ivy directories-->
<property name="shared.ant.dir" value="${shared.project.root}/${relative.shared.ant.dir}"/>
<property name="shared.template.dir" value="${shared.ant.dir}/template"/>
<!-- if ant.project name is not set explicitly, we derive it from the project directory -->
<ac:propertyregex property="ant.project.name"
input="${ant.file}"
regexp="(.*[\\/])([^\\/]+)[\\/][^\\/]+"
replace="\2"
global="true"
/>
<!-- The project directory is also obtained/guessed from the ant file location -->
<ac:propertyregex property="project.dir"
input="${ant.file}"
regexp="(.*)[\\/][^\\/]+"
replace="\1"
global="true"
/>
<!-- default programming language -->
<!--property name="language" value="java"/-->
<!-- SETTINGS FOR THE IVY REPOSITORIES -->
<!-- GLOBAL SETTINGS: -->
<!-- The root of several (hmi) filesystem based repositories: -->
<property name="hmi.repository.filesystem.root" value="${hmi.shared.dir}"/>
<property name="asap.repository.filesystem.root" value="${asap.shared.dir}"/>
<property name="soa.repository.filesystem.root" value="${soa.shared.dir}"/>
<!-- The base URL of similar, url based, repositories: -->
<!--property name="hmi.repository.url.base" value="http://hmirepo.ewi.utwente.nl"/-->
<property name="hmi.repository.url.base" value="http://things.ewi.utwente.nl/asap/repository/hmirepo"/>
<!-- Master switch for using either "filesystem" or (web based) "url" resolvers: -->
<!--property name="repository.mode" value="url"/--> <!-- either "filesystem" or "url" -->
<property name="repository.mode" value="url"/> <!-- either "filesystem" or "url" -->
<!--property name="asap.repository.url.base" value="http://asap-project.ewi.utwente.nl/repo"/-->
<property name="asap.repository.url.base" value="http://things.ewi.utwente.nl/asap/repository/asap-project"/>
<!-- EXTERNAL REPO -->
<!-- Mode switch, for overriding "repository.mode" for "external" repository: -->
<property name="external.repository.mode" value="${repository.mode}"/> <!-- either "filesystem" or "url" -->
<!-- The actual locations of the external repository filesystem and url: -->
<property name="external.repository.filesystem" value="${hmi.repository.filesystem.root}/external/${language}"/>
<property name="external.repository.url" value="${hmi.repository.url.base}/external/${language}"/>
<!-- HMICORE REPO -->
<!-- Mode switch, for overriding "repository.mode" for "hmicore" repository: -->
<property name="hmicore.repository.mode" value="${repository.mode}"/> <!-- either "filesystem" or "url" -->
<!-- The actual locations of the hmicore repository: -->
<property name="hmicore.repository.filesystem" value="${hmi.repository.filesystem.root}/hmicore/${language}"/>
<property name="hmicore.repository.url" value="${hmi.repository.url.base}/hmicore/${language}"/>
<!-- The actual locations of the soa repository: -->
<property name="soa.repository.filesystem" value="${soa.repository.filesystem.root}/soacore/${language}"/>
<property name="soa.resource.repository.filesystem" value="${soa.repository.filesystem.root}/resource"/>
<property name="soa.external.repository.filesystem" value="${soa.repository.filesystem.root}/external/${language}"/>
<!-- RESOURCE REPO -->
<!-- Mode switch, for overriding "repository.mode" for "resource" repository: -->
<property name="resource.repository.mode" value="${repository.mode}"/> <!-- either "filesystem" or "url" -->
<!-- The property used within the ant/ivy/ivysettings.xml file: -->
<!-- NOTE: this seems to be legacy, might not actually be used anymore. Most recent seems to be the resource repo defined below -->
<property name="resource.repository" value="resource.${resource.repository.mode}.repository"/>
<property name="asap.resource.repository" value="asap.resource.${resource.repository.mode}.repository"/>
<!-- ASAP REPO -->
<!-- Mode switch, for overriding "repository.mode" for "asap" repository: -->
<property name="asap.repository.mode" value="${repository.mode}"/> <!-- either "filesystem" or "url" -->
<!-- The actual locations of the asap repository: -->
<property name="asap.repository.filesystem" value="${asap.repository.filesystem.root}/repository/${language}"/>
<property name="asap.repository.url" value="${asap.repository.url.base}/repository/${language}"/>
<!-- RESOURCE REPO -->
<!-- Mode switch, for overriding "repository.mode" for "resource" repository: -->
<property name="resource.repository.mode" value="${repository.mode}"/> <!-- either "filesystem" or "url" -->
<!-- The actual locations of the resource repository: -->
<property name="resource.repository.filesystem" value="${hmi.repository.filesystem.root}/resource"/>
<property name="resource.repository.url" value="${hmi.repository.url.base}/resource"/>
<property name="asap.resource.repository.filesystem" value="${asap.repository.filesystem.root}/resource"/>
<property name="asap.resource.repository.url" value="${asap.repository.url.base}/resource"/>
<!-- PROJECTS REPO -->
<!-- Mode switch, for overriding "repository.mode" for "projects" repository: -->
<property name="projects.repository.mode" value="filesystem"/> <!--NB -->
<!-- The actual locations of the resource repository: -->
<property name="projects.repository.filesystem" value="${projects.dir}/repository"/>
<!-- NO URL BASED RESOLVER YET FOR PROJECTS-->
<!-- END IVY REPOSITORIES SECTION -->
<!-- We read the project's ant build properties file. -->
<!-- One can use properties defined above, like hmi.repository or shared.repository, -->
<!-- inside this properties file. (That's why we read it at this place) -->
<property name="properties.file" value="build.properties"/>
<property file="${properties.file}" />
<property name="language" value="java"/>
<!-- next we load the "real" build files. They can be redefined, -->
<!-- for instance within the properties file, by setting build.impl and/or build.customize-->
<property name="build.impl" value="build-${language}.xml"/>
<import file="${build.impl}" />
<import file="build-Util.xml"/>
<import file="build-Buildfile.xml" />
<import file="build-Testing.xml" />
<import file="build-Versioning.xml" />
<!-- overwrite jar target from Core -->
<target name="createmanifest" description="Creates a manifest file with ivy info" unless="${manifest.file.present}">
<antcall target="-ivy.manifest"/>
</target>
<target name="jar" depends="versioned.jar" description="Creates a versioned jar"/>
<target name="main" depends="Util.main" description="Show/Set main class"/>
<import file="build-UltraEdit.xml" />
<import file="build-Eclipse.xml" />
<import file="build-Rebuilding.xml" />
<import file="build-Ivy.xml" />
<import file="build-Demo.xml" />
<!--import file="build-Webstart.xml" / --> <!-- TODO Webstart -> Java ? -->
<target name="helphelp">
<echo> -- Help commands --
help Help for building, running, testing programs
Ivy.help Help for version management
Demo.help Help for creating demo versions
Buildfile.help Help for managing build files </echo>
</target>
<target name="help" depends="helphelp, -help, Ivy.help" description="Basic help"/>
</project>