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

Last change on this file was 37784, checked in by kjdon, 10 months ago

removed the source and target javacflags to keep solr in line with the rest of greenstone3

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