source: gs3-extensions/solr/trunk/src/build.xml@ 35386

Last change on this file since 35386 was 35386, checked in by kjdon, 3 years ago

add in source and target args to javac to keep the compiling in line with the rest of greenstone

File size: 12.9 KB
Line 
1<?xml version="1.0"?>
2<project name="gs3-solr-ext" default="usage" basedir=".">
3
4 <!-- DIRECTORY LOCATIONS -->
5 <!-- local ext paths -->
6 <loadproperties prefix="gs3." srcFile="${basedir}/../../build.properties"/>
7 <property name="src.home" value="${basedir}/src/java"/>
8 <property name="build.home" value="${basedir}/build"/>
9 <available property="ext.web.exists" file="${basedir}/web" type="dir" />
10
11 <!-- greenstone3 paths -->
12 <!-- http://stackoverflow.com/questions/3136849/how-do-i-convert-a-relative-path-in-ant-to-an-absolute-path
13 http://stackoverflow.com/questions/8295860/pathconvert-with-relative-file-names -->
14 <property name="web.home" location="${basedir}/../../web"/> <!-- location property creates an absolute path -->
15 <property name="localsite.collectdir" value="${web.home}/sites/localsite/collect"/>
16 <property name="web.classesdir" value="${web.home}/WEB-INF/classes"/>
17 <property name="web.libdir" value="${web.home}/WEB-INF/lib"/>
18 <property name="web.extdir" value="${web.home}/ext/solr"/>
19
20 <condition property="tomcat.dir" value="${gs3.tomcat.installed.path}" else="${basedir}/../../packages/tomcat">
21 <and>
22 <isset property="gs3.tomcat.installed.path"/>
23 <not>
24 <equals arg1="${gs3.tomcat.installed.path}" arg2=""/>
25 </not>
26 </and>
27 </condition>
28 <condition property="solr.context" value="${gs3.solr.context}" else="solr">
29 <and>
30 <isset property="gs3.solr.context"/>
31 <not>
32 <equals arg1="${gs3.solr.context}" arg2=""/>
33 </not>
34 </and>
35 </condition>
36 <property name="tomcat.lib.dir" value="${tomcat.dir}/lib"/>
37 <property name="tomcat.context.dir" value="${tomcat.dir}/conf/Catalina/localhost"/>
38
39
40 <path id="compile.classpath">
41 <!-- gs3 jar files we need -->
42 <pathelement location="${web.libdir}/gsdl3.jar"/>
43 <pathelement location="${web.libdir}/gutil.jar"/>
44 <pathelement location="${web.libdir}/LuceneWrapper4.jar"/>
45 <pathelement location="${web.libdir}/gson-2.8.6.jar"/>
46 <!-- local jar files -->
47 <fileset dir="lib/java">
48 <include name="*.jar"/>
49 </fileset>
50 <pathelement location="lib/servlet-api-3.0.jar"/>
51 </path>
52
53
54 <!-- FILE LISTINGS.-->
55 <!-- Created as property elements rather than as filelist elements, since
56 they can then be reused for the add-service and delete-service targets. -->
57 <property name="jars"
58 value="solr-core-4.7.2.jar
59 solr-solrj-4.7.2.jar
60 lucene-core-4.7.2.jar
61 lucene-analyzers-common-4.7.2.jar
62 lucene-analyzers-kuromoji-4.7.2.jar
63 lucene-analyzers-phonetic-4.7.2.jar
64 lucene-grouping-4.7.2.jar
65 lucene-highlighter-4.7.2.jar
66 lucene-queries-4.7.2.jar
67 lucene-queryparser-4.7.2.jar
68 lucene-memory-4.7.2.jar
69 lucene-misc-4.7.2.jar
70 lucene-spatial-4.7.2.jar
71 lucene-suggest-4.7.2.jar
72 httpclient-4.3.1.jar
73 httpcore-4.3.jar
74 httpmime-4.3.1.jar
75 commons-fileupload-1.2.1.jar
76 commons-io-2.1.jar
77 commons-lang-2.6.jar
78 velocity-1.6.1.jar
79 log4j-over-slf4j-1.6.6.jar
80 slf4j-api-1.6.6.jar
81 slf4j-jdk14-1.6.6.jar
82 spatial4j-0.4.1.jar
83 zookeeper-3.4.5.jar
84 guava-14.0.1.jar
85 noggit-0.5.jar"/>
86<!-- jcl-over-slf4j-1.6.6.jar
87 jul-to-slf4j-1.6.6.jar
88 log4j-1.2.16.jar
89 wstx-asl-3.2.7.jar
90-->
91<!--
92 lucene-spellchecker-3.3.0.jar replaced with lucene-suggest-4.7.2.jar, since both contain packages org/.../spell and org/.../suggest
93
94 commons-fileupload-1.2.1.jar - in solr war file
95 velocity-1.6.1.jar
96 log4j-over-slf4j-1.6.1.jar - have to download slf4j jar file for version 1.6.6
97 slf4j-jdk14-1.6.1.jar - have to download slf4j jar file for version 1.6.6
98 -->
99
100 <property name="shared-xalan-jars"
101 value="xalan.jar
102 xercesImpl.jar
103 xml-apis.jar
104 xsltc.jar
105 serializer.jar"/>
106 <property name="russian-morph-jars"
107 value="jmorphy2-lucene-0.2.0.jar
108 jmorphy2-nlp-0.2.0.jar
109 jmorphy2-core-0.2.0.jar
110 dawg-0.2.0.jar
111 jmorphy2-dicts-uk-0.2.0.jar
112 guava-18.0.jar
113 commons-codec-1.10.jar
114 noggit-0.7.jar
115 jmorphy2-dicts-ru-0.2.0.jar"/>
116
117
118 <property name="java-service-files"
119 value="SolrSearch.java
120 GS2SolrSearch.java
121 GS2SolrRetrieve.java"/>
122
123 <property name="java-util-files"
124 value="SolrFacetWrapper.java
125 SolrQueryWrapper.java
126 SolrQueryResult.java"/>
127
128<!-- <property name="property-files"
129 value="GS2SolrSearch.properties"/> -->
130
131
132 <!-- TARGETS -->
133 <target name="usage" description="Print a help message">
134 <echo message=" Execute 'ant -projecthelp' for a list of targets."/>
135 <echo message=" Execute 'ant -help' for Ant help."/>
136 <echo>To install the Solr extension for Greenstone3, run 'ant add-service'.
137 To remove the files and folders installed by add-service, run 'ant del-service'.
138 </echo>
139 </target>
140
141 <target name="compile" description="Compile up the solr java classes, jar them up, and install gs3-solr.jar into Greenstone's web/WEB-INF/lib dir">
142 <mkdir dir="${build.home}"/>
143 <javac srcdir="${src.home}" destdir="${build.home}" debug="true"
144 source="1.6" target="1.6">
145 <classpath>
146 <path refid="compile.classpath"/>
147 </classpath>
148 </javac>
149 <jar destfile="${build.home}/gs3-solr.jar">
150 <fileset dir="${build.home}">
151 <include name="org/greenstone/gsdl3/**"/>
152 </fileset>
153 <manifest>
154 <attribute name="Built-By" value="${user.name}" />
155 </manifest>
156 </jar>
157 <copy file="${build.home}/gs3-solr.jar" todir="${web.libdir}"/>
158
159 <!-- customisations to the http solr server -->
160 <jar destfile="${build.home}/gs3-solrserver.jar">
161 <fileset dir="${build.home}">
162 <include name="org/greenstone/solrserver/**"/>
163 </fileset>
164 <manifest>
165 <attribute name="Built-By" value="greenstone3" />
166 </manifest>
167 </jar>
168 <!--<copy file="${build.home}/gs3-solrserver.jar" todir="${tomcat.dir}/webapps/solr/WEB-INF/lib"/>
169
170 But there's no guarantee the destination will exist at the beginning.
171 The jar file also needs to go into solr.war. Which is taken care of in the add-service task.
172 Instead, for testing, call ant compile-gs3-solrserver, which will copy it across to solr webapp.
173 -->
174 </target>
175
176 <target name="copy-files" description="Helper-target: copy files across for add-service target">
177
178 <echo/>
179<!-- <echo>Adding to gsdl3 properties area: properties/${property-files}</echo>
180 <copy todir="${web.classesdir}">
181 <filelist id="prop-files" dir="properties" files="${property-files}"/>
182 </copy>
183 <echo/>-->
184 <echo>Adding to gsdl3 web jar lib directory: ${basedir}/lib/java's ${jars}</echo>
185 <copy todir="${web.libdir}">
186 <filelist id="jar-files" dir="lib/java" files="${jars}"/>
187 </copy>
188
189 <echo/>
190 <echo>Creating web extension directory: ${web.extdir}</echo>
191 <mkdir dir="${web.extdir}"/>
192
193 <echo/>
194 <echo>Adding to gsdl3 web solr ext directory: solr.xml and solr.xml.in</echo>
195 <copy file="solr.xml.in" tofile="${web.extdir}/solr.xml.in"/>
196 <pathconvert targetos="unix" property="src.gsdl3.home.unix">
197 <path path="../../web"/>
198 </pathconvert>
199 <filter token="gsdl3home" value="${src.gsdl3.home.unix}"/>
200 <copy file="solr.xml.in" tofile="${web.extdir}/solr.xml" filtering="true" overwrite="true"/>
201
202 <echo/>
203 <echo>Adding example solr-jdbm-demo collection to ${localsite.collectdir}</echo>
204 <copy todir="${localsite.collectdir}/solr-jdbm-demo"
205 preservelastmodified="true"
206 failonerror="true" >
207 <fileset dir="${basedir}/collect/solr-jdbm-demo" includes="**"/>
208 </copy>
209 <echo>Unzipping pre-built index</echo>
210 <unzip dest="${localsite.collectdir}/solr-jdbm-demo" src="${localsite.collectdir}/solr-jdbm-demo/index.zip" />
211 </target>
212
213 <!-- Setting up solr to work with tomcat server instead of jetty server -->
214 <target name="solr-for-tomcat" description="Helper-target: setting up solr to work with tomcat">
215
216 <!-- slf4j and commons logging bridge needed to avoid exception about incompatibility in tomcat log files-->
217 <echo>Copying ${basedir}/lib/ext/jcl-over-slf4j-1.6.6.jar again to ${web.libdir}</echo>
218 <copy todir="${web.libdir}">
219 <filelist id="logging-bridge" dir="lib/ext" files="jcl-over-slf4j-1.6.6.jar"/>
220 </copy>
221
222 <echo>Upddating xalan related jar files, morphology and gs3-solrserver jars from ${web.libdir} in solr.war</echo>
223 <war destfile="webapps/solr.war" update="true" >
224 <zipfileset dir="lib/russianmorphology" includes="*.jar" prefix="WEB-INF/lib"/>
225 <zipfileset dir="lib/ext" includes="*.jar" prefix="WEB-INF/lib"/>
226 <zipfileset dir="${web.libdir}" includes="${shared-xalan-jars}" prefix="WEB-INF/lib"/>
227 <zipfileset dir="${build.home}" includes="gs3-solrserver.jar" prefix="WEB-INF/lib"/>
228 </war>
229
230 <echo>Copying ${basedir}/webapps/solr.war to ${tomcat.dir}/webapps/${solr.context}.war</echo>
231 <copy file="webapps/solr.war" tofile="${tomcat.dir}/webapps/${solr.context}.war" />
232
233 <echo>Generating solr context file in ${tomcat.context.dir}</echo>
234
235 <!-- we want unix paths (forward slashes) in the tomcat context file -->
236 <pathconvert targetos="unix" property="gsdl3.web.home">
237 <path path="${web.home}"/><!-- creates an absolute path-->
238 </pathconvert>
239 <pathconvert targetos="unix" property="tomcat.home">
240 <path path="${tomcat.dir}"/><!-- creates an absolute path-->
241 </pathconvert>
242 <filter token="gsdl3webhome" value="${gsdl3.web.home}"/>
243 <filter token="tomcathome" value="${tomcat.home}"/>
244 <filter token="solr.context" value="${solr.context}"/>
245 <copy file="solr-tomcat-context.xml.in" tofile="${tomcat.context.dir}/${solr.context}.xml" filtering="true" overwrite="true"/>
246
247 </target>
248
249 <!-- copy the content of the web folder (avoiding the top-level .svn directory) -->
250 <target name="copy-solr-web" if="ext.web.exists">
251 <echo/>
252 <echo>Copy to gsdl3 web: the content of the ${basedir}/web folder (excluding .svn)</echo>
253 <copy todir="${web.extdir}">
254 <dirset dir="${basedir}/web">
255 <exclude name=".svn"/>
256 </dirset>
257 </copy>
258 </target>
259
260
261 <target name="add-service" depends="copy-solr-web,copy-files,compile,solr-for-tomcat" description="Run this target to setup the Solr extension for Greenstone3" />
262
263 <target name="del-service" depends="del-files,del-solr-for-tomcat"
264 description="Run this target to unset the Solr extension for Greenstone3" />
265
266
267 <target name="del-files" description="Helper-target to delete files for del-service target">
268 <!-- failonerror is set to false in case some files don't exist
269 and can't be deleted therefore -->
270
271 <echo/>
272<!-- <echo>Removing from gsdl3 properties area: properties/${property-files}</echo>
273 <delete failonerror="false">
274 <filelist dir="${web.classesdir}" files="${property-files}"/>
275 </delete>
276
277 <echo/>-->
278 <echo>Removing from gsdl3 web jar lib directory: ${basedir}/lib/java's ${jars} gs3-solr.jar</echo>
279 <delete failonerror="false">
280 <filelist dir="${web.libdir}" files="${jars} gs3-solr.jar"/>
281 </delete>
282
283 <echo/>
284 <echo>Removing web solr extension directory: ${web.extdir}</echo>
285 <delete failonerror="false" includeEmptyDirs="true" dir="${web.extdir}"/>
286
287 <echo/>
288 <echo>Removing solr-jdbm-demo collection from: ${localsite.collectdir}</echo>
289 <delete failonerror="false" includeEmptyDirs="true" dir="${localsite.collectcdir}/solr-jdbm-demo"/>
290
291 </target>
292
293 <target name="del-solr-for-tomcat" description="Helper-target to remove files for getting solr to work with tomcat">
294
295 <echo/>
296 <echo>Removing solr modifications to tomcat: context file, solr.war and deployed version, jar files</echo>
297
298 <!-- Actually need to ensure tomcat is not running at this point
299 But if solr.war is deleted first, it can't be re-deployed when deleting the solr folder subsequently
300 -->
301 <delete failonerror="false" file="${tomcat.dir}/webapps/${solr.context}.war"/>
302 <delete failonerror="false" includeEmptyDirs="true" dir="${tomcat.dir}/webapps/${solr.context}"/>
303
304 <delete failonerror="false" file="${tomcat.context.dir}/${solr.context}.xml"/>
305
306 <!-- delete all the jar files in tomcat/lib that were copied from ext/solr/lib/ext
307 which are all the jar files that are present in both tomcat/lib and ext/solr/lib/ext
308 https://ant.apache.org/manual/Types/selectors.html#presentselect -->
309 <delete failonerror="false">
310 <fileset dir="${tomcat.lib.dir}" includes="**/*.jar">
311 <present present="both" targetdir="lib/ext"/>
312 </fileset>
313 </delete>
314
315 <!-- remove logging bridge jar file that was added into greenstone 3 web lib area -->
316 <delete failonerror="false" file="${web.libdir}/jcl-over-slf4j-1.6.6.jar"/>
317
318 <!--http://stackoverflow.com/questions/2140637/how-do-i-build-a-list-of-file-names-->
319 </target>
320
321 <target name="compile-gs3-solrserver" description="TEST Target to compile the solr server side gs3-solserver.jar for testing">
322 <delete dir="build/org/greenstone/solrserver" />
323 <delete file="build/gs3-solrserver.jar" />
324 <antcall target="compile" />
325 <copy file="${build.home}/gs3-solrserver.jar" todir="${tomcat.dir}/webapps/solr/WEB-INF/lib" />
326 </target>
327
328</project>
Note: See TracBrowser for help on using the repository browser.