pylucene 3.5.0-3
[pylucene.git] / lucene-java-3.5.0 / lucene / build.xml
1 <?xml version="1.0"?>
2
3 <!--
4     Licensed to the Apache Software Foundation (ASF) under one or more
5     contributor license agreements.  See the NOTICE file distributed with
6     this work for additional information regarding copyright ownership.
7     The ASF licenses this file to You under the Apache License, Version 2.0
8     the "License"); you may not use this file except in compliance with
9     the License.  You may obtain a copy of the License at
10  
11         http://www.apache.org/licenses/LICENSE-2.0
12  
13     Unless required by applicable law or agreed to in writing, software
14     distributed under the License is distributed on an "AS IS" BASIS,
15     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16     See the License for the specific language governing permissions and
17     limitations under the License.
18  -->
19
20 <project name="core" default="default" basedir="."
21          xmlns:artifact="antlib:org.apache.maven.artifact.ant">
22
23   <property name="junit.includes" value="**/Test*.java"/>
24
25   <import file="common-build.xml"/>
26
27   <!-- Build classpath -->
28   <path id="classpath">
29     <pathelement location="${build.dir}/classes/java"/>
30   </path>
31
32   <path id="demo.classpath">
33     <path refid="classpath"/>
34     <pathelement location="${build.dir}/classes/demo"/>
35   </path>
36
37   <path id="test.classpath">
38         <path refid="classpath"/>
39     <path refid="junit-path"/>
40     <pathelement location="${build.dir}/classes/test-framework"/>
41     <pathelement location="${build.dir}/classes/test"/>
42   </path>
43
44   <path id="junit.classpath">
45     <path refid="junit-path"/>
46     <pathelement location="${build.dir}/classes/test-framework"/>
47     <pathelement location="${build.dir}/classes/test"/>
48     <pathelement location="${build.dir}/classes/java"/>
49     <pathelement path="${java.class.path}"/>
50   </path>
51
52   <patternset id="binary.build.dist.patterns"
53               includes="${final.name}*.jar,lucene-test-framework*.jar,docs/,contrib/*/*.jar,contrib/*/*.war, contrib/*/*/*.jar"
54               excludes="*-src.jar"
55   />
56   <patternset id="binary.root.dist.patterns"
57               includes="CHANGES.txt,LICENSE.txt,NOTICE.txt,README.txt,MIGRATE.txt,JRE_VERSION_MIGRATION.txt,contrib/**/README*,**/CHANGES.txt,contrib/**/*.sh contrib/**/docs/ contrib/xml-query-parser/*.dtd,lib/*.jar,lib/*LICENSE*.txt,lib/*NOTICE*.txt,contrib/*/lib/*.jar,contrib/*/lib/*LICENSE*.txt,contrib/*/lib/*NOTICE*.txt"
58   />
59
60
61   <!-- ================================================================== -->
62   <!-- Prepares the build directory                                       -->
63   <!-- ================================================================== -->
64
65   <target name="test-core" depends="common.test"
66           description="Runs unit tests for the core Lucene code"
67   />
68   <target name="test" depends="test-core, test-contrib, test-backwards"
69           description="Runs all unit tests (core, contrib and back-compat)"
70   />
71
72   <path id="backwards.test.compile.classpath">
73     <path refid="junit-path"/>
74     <path refid="ant-path"/>
75     <fileset dir="${backwards.dir}/lib">
76       <include name="lucene-core*.jar"/>
77     </fileset>
78   </path>
79         
80   <path id="backwards.junit.classpath">
81     <path refid="junit-path"/>
82     <path refid="classpath"/>
83     <pathelement location="${build.dir.backwards}/classes/test"/>
84     <pathelement path="${java.class.path}"/>
85   </path>
86
87   <!-- remove this -->
88   <target name="test-tag" depends="test-backwards" description="deprecated"/>
89   
90   <target name="compile-backwards" depends="compile-core"
91         description="Runs tests of a previous Lucene version.">
92     <sequential>
93       <mkdir dir="${build.dir.backwards}"/>       
94           
95       <!-- compile branch tests against previous version JAR file -->   
96       <compile-test-macro srcdir="${backwards.dir}/src/test-framework" destdir="${build.dir.backwards}/classes/test"
97                   test.classpath="backwards.test.compile.classpath" javac.source="${javac.source.backwards}" javac.target="${javac.target.backwards}"/>
98       <compile-test-macro srcdir="${backwards.dir}/src/test" destdir="${build.dir.backwards}/classes/test"
99                   test.classpath="backwards.test.compile.classpath" javac.source="${javac.source.backwards}" javac.target="${javac.target.backwards}"/>
100       
101
102     </sequential>
103   </target>     
104
105   <target name="test-backwards" depends="compile-backwards, backwards-test-warning, junit-backwards-mkdir, junit-backwards-sequential, junit-backwards-parallel"/>
106
107   <target name="junit-backwards-mkdir">
108     <mkdir dir="${build.dir.backwards}/test"/>
109   </target>
110
111   <target name="check-backwards-params">
112     <condition property="backwards.ignoring.params">
113       <or>
114         <istrue value="${tests.nightly}"/>
115         <not><equals arg1="${tests.multiplier}" arg2="1"/></not>
116       </or>
117     </condition>
118   </target>
119
120   <target name="backwards-test-warning" depends="check-backwards-params" if="backwards.ignoring.params">
121     <echo>
122        Warning: Ignoring your multiplier and nightly settings for backwards tests.
123        These tests are for API compatibility only!
124     </echo>
125   </target>
126
127   <macrodef name="backwards-test-macro">
128         <attribute name="threadNum" default="1"/>
129         <attribute name="threadTotal" default="1"/>
130         <sequential>
131           <!-- run branch tests against trunk jar:
132           Note: we disable multiplier/nightly because the purpose is to find API breaks
133           -->
134       <test-macro 
135         dataDir="${backwards.dir}/src/test" 
136         tempDir="${build.dir.backwards}/test" 
137         junit.classpath="backwards.junit.classpath" 
138         junit.output.dir="${junit.output.dir.backwards}" 
139         tests.nightly="false"
140         tests.multiplier="1"
141         threadNum="@{threadNum}" 
142         threadTotal="@{threadTotal}"/>
143         </sequential>
144   </macrodef>
145
146   <target name="junit-backwards-sequential" if="tests.sequential">
147     <backwards-test-macro/>
148   </target>
149
150   <target name="junit-backwards-parallel" unless="tests.sequential">
151     <parallel threadsPerProcessor="${tests.threadspercpu}">
152      <backwards-test-macro threadNum="1" threadTotal="8"/>
153      <backwards-test-macro threadNum="2" threadTotal="8"/>
154      <backwards-test-macro threadNum="3" threadTotal="8"/>
155      <backwards-test-macro threadNum="4" threadTotal="8"/>
156      <backwards-test-macro threadNum="5" threadTotal="8"/>
157      <backwards-test-macro threadNum="6" threadTotal="8"/>
158      <backwards-test-macro threadNum="7" threadTotal="8"/>
159      <backwards-test-macro threadNum="8" threadTotal="8"/>
160     </parallel>
161   </target>
162
163   <!-- ================================================================== -->
164   <!-- J A R                                                              -->
165   <!-- ================================================================== -->
166   <!--                                                                    -->
167   <!-- ================================================================== -->
168
169   <target name="compile-core" depends="jflex-notice, javacc-notice, common.compile-core"/>
170
171   <!-- ================================================================== -->
172   <!-- D O C U M E N T A T I O N                                          -->
173   <!-- ================================================================== -->
174   <!--                                                                    -->
175   <!-- ================================================================== -->
176   <target name="docs">
177   <!-- copies the docs over to the docs folder -->
178     <copy todir="build/docs">
179       <fileset dir="src/site/build/site"/> 
180     </copy>
181   </target>
182
183   <target name="javadoc" depends="javadocs"/>
184   <target name="javadocs" description="Generate javadoc" 
185           depends="javadocs-all, javadocs-core, javadocs-contrib, javadocs-test-framework">
186     <echo file="${javadoc.dir}/index.html" append="false">
187 <![CDATA[<html><head><title>${Name} ${version} Javadoc Index</title></head>
188 <body>
189 <h1>${Name} ${version} Javadoc Index</h1>
190 <ul>
191   <li><a href="all/index.html">All</a></li>
192   <li><a href="core/index.html">Core</a></li>
193   <li><a href="test-framework/index.html">Test Framework</a></li>
194   <li>Contrib packages:</li>
195   <ul>
196 ]]></echo>
197     <contrib-crawl target="javadocs-index.html" failonerror="false"/>
198     <echo file="${javadoc.dir}/index.html" append="true"><![CDATA[
199   </ul>
200 </ul></body>]]></echo>
201   </target>
202         
203   <target name="javadocs-core" description="Generate javadoc for core classes">
204         <sequential>
205       <mkdir dir="${javadoc.dir}/core"/>
206       <invoke-javadoc
207         destdir="${javadoc.dir}/core"
208         title="${Name} ${version} core API">
209         <sources>
210           <packageset dir="src/java"/>
211           <link href=""/>
212         </sources>
213       </invoke-javadoc>
214      <jarify basedir="${javadoc.dir}/core" destfile="${build.dir}/${final.name}-javadoc.jar"/>
215     </sequential>
216   </target>
217
218   <target name="javadocs-contrib" description="Generate javadoc for contrib classes">
219     <contrib-crawl target="javadocs"
220                    failonerror="false"/>
221   </target>
222         
223   <target name="javadocs-all" description="Generate javadoc for core and contrib classes">
224         <sequential>
225       <mkdir dir="${javadoc.dir}/all"/>
226       
227       <path id="javadoc.classpath">
228         <path refid="classpath"/>
229         <pathelement location="${ant.home}/lib/ant.jar"/>
230         <fileset dir=".">
231           <exclude name="build/**/*.jar"/>
232           <include name="**/lib/*.jar"/>
233         </fileset>
234       </path>
235
236       <invoke-javadoc
237         destdir="${javadoc.dir}/all">
238         <sources>
239           <!-- TODO: find a dynamic way to do include multiple source roots -->
240           <packageset dir="src/java"/>
241
242           <!-- please keep this list up to date, and in alpha order...   -->
243         
244           <!-- ie: `find contrib/* -path \*src/java | sort` -->
245
246           <!-- if you make changes to the list of package sets, also -->
247           <!-- make sure the group list below is updated.            -->
248           <!-- Also remember to keep site.xml in sync.            -->             
249
250           <packageset dir="contrib/analyzers/common/src/java"/>
251           <packageset dir="contrib/analyzers/smartcn/src/java"/>
252           <packageset dir="contrib/analyzers/stempel/src/java"/>
253           <packageset dir="contrib/benchmark/src/java"/>
254           <packageset dir="contrib/demo/src/java"/>
255           <packageset dir="contrib/facet/src/java"/>
256           <packageset dir="contrib/grouping/src/java"/>
257           <packageset dir="contrib/icu/src/java"/>
258           <packageset dir="contrib/highlighter/src/java"/>
259           <packageset dir="contrib/instantiated/src/java"/>
260           <packageset dir="contrib/join/src/java"/>
261           <packageset dir="contrib/memory/src/java"/>
262           <packageset dir="contrib/misc/src/java"/>
263           <packageset dir="contrib/queries/src/java"/>
264           <packageset dir="contrib/remote/src/java"/>
265           <packageset dir="contrib/spatial/src/java"/>
266           <packageset dir="contrib/spellchecker/src/java"/>
267           <packageset dir="contrib/xml-query-parser/src/java"/>
268           <packageset dir="contrib/queryparser/src/java"/>
269           <!-- end alpha sort -->
270
271           <!-- If the main javadoc Group listing includes an "Other   -->
272           <!-- Packages" group after the ones listed here, then those -->
273           <!-- packages are not being matched by any of these rules   -->
274   
275           <group title="Core" packages="org.apache.*:org.apache.lucene.analysis:org.apache.lucene.analysis.standard*:org.apache.lucene.analysis.tokenattributes*"/>
276
277           <group title="contrib: Analysis" packages="org.apache.lucene.analysis.*:org.tartarus.snowball*:org.egothor.stemmer*"/>
278           <group title="contrib: Benchmark" packages="org.apache.lucene.benchmark*"/>
279           <group title="contrib: ICU" packages="org.apache.lucene.collation*"/>
280           <group title="contrib: Demo" packages="org.apache.lucene.demo*"/>
281           <group title="contrib: Facet" packages="org.apache.lucene.facet*"/>
282           <group title="contrib: Grouping" packages="org.apache.lucene.search.grouping*"/>
283           <group title="contrib: Highlighter" packages="org.apache.lucene.search.highlight*:org.apache.lucene.search.vectorhighlight*"/>
284           <group title="contrib: Instantiated" packages="org.apache.lucene.store.instantiated*"/>
285           <group title="contrib: Join" packages="org.apache.lucene.search.join*"/>
286           <group title="contrib: Memory" packages="org.apache.lucene.index.memory*"/>
287           <group title="contrib: Misc " packages="org.apache.lucene.misc*"/>
288           <group title="contrib: Queries" packages="org.apache.lucene.search.similar*:org.apache.lucene.search.regex*:org.apache.regexp*"/>
289           <group title="contrib: Query Parser" packages="org.apache.lucene.queryParser.*"/>
290           <group title="contrib: Spatial" packages="org.apache.lucene.spatial*"/>
291           <group title="contrib: SpellChecker" packages="org.apache.lucene.search.spell*"/>
292           <group title="contrib: XML Query Parser" packages="org.apache.lucene.xmlparser*"/>
293           
294         </sources>
295       </invoke-javadoc>
296         </sequential>
297   </target>
298
299
300   <!-- ================================================================== -->
301   <!-- D I S T R I B U T I O N                                            -->
302   <!-- ================================================================== -->
303   <!--                                                                    -->
304   <!-- ================================================================== -->
305   <target name="package" depends="jar-core, jar-test-framework, docs, javadocs, build-contrib, init-dist, changes-to-html"/>
306
307   <target name="nightly" depends="test, package-tgz">
308   </target>
309
310   <!-- ================================================================== -->
311   <!-- Packages the distribution with zip                                 -->
312   <!-- ================================================================== -->
313   <!--                                                                    -->
314   <!-- ================================================================== -->
315   <target name="package-zip" depends="package"
316     description="--> Generates the Lucene distribution as .zip">
317
318     <delete file="${dist.dir}/lucene-${version}.zip"/>
319     <zip destfile="${dist.dir}/lucene-${version}.zip">
320       <zipfileset prefix="lucene-${version}" dir=".">
321         <patternset refid="binary.root.dist.patterns"/>
322       </zipfileset>
323       <zipfileset dir="${build.dir}" includes="build-demo.xml" fullpath="lucene-${version}/build.xml"/>
324       <zipfileset prefix="lucene-${version}" dir="${build.dir}">
325         <patternset refid="binary.build.dist.patterns"/>
326       </zipfileset>
327     </zip>
328         <make-checksums file="${dist.dir}/lucene-${version}.zip"/>
329   </target>
330
331   <!-- ================================================================== -->
332   <!-- packages the distribution with tar-gzip                            -->
333   <!-- ================================================================== -->
334   <!--                                                                    -->
335   <!-- ================================================================== -->
336   <target name="package-tgz" depends="package"
337     description="--> Generates the lucene distribution as .tgz">
338
339     <delete file="${build.dir}/lucene-${version}.tar"/>
340     <delete file="${dist.dir}/lucene-${version}.tgz"/>
341     <tar tarfile="${build.dir}/lucene-${version}.tar" longfile="gnu">
342       <tarfileset prefix="lucene-${version}" dir=".">
343         <patternset refid="binary.root.dist.patterns"/>
344       </tarfileset>
345       <tarfileset prefix="lucene-${version}" dir="${build.dir}">
346         <patternset refid="binary.build.dist.patterns"/>
347       </tarfileset>
348     </tar>
349
350     <gzip zipfile="${dist.dir}/lucene-${version}.tgz"
351       src="${build.dir}/lucene-${version}.tar"
352       />
353           <make-checksums file="${dist.dir}/lucene-${version}.tgz"/>
354   </target>
355
356   <!-- ================================================================== -->
357   <!-- packages the distribution with zip and tar-gzip                    -->
358   <!-- ================================================================== -->
359   <!--                                                                    -->
360   <!-- ================================================================== -->
361   <target name="package-all-binary" depends="package-zip, package-tgz"
362     description="--> Generates the .tgz and .zip distributions"/>
363
364   <!-- ================================================================== -->
365   <!-- same as package-all. it is just here for compatibility.            -->
366   <!-- ================================================================== -->
367   <!--                                                                    -->
368   <!-- ================================================================== -->
369   <target name="dist" depends="package-all-binary"/>
370
371   <!-- ================================================================== -->
372   <!-- S O U R C E  D I S T R I B U T I O N                               -->
373   <!-- ================================================================== -->
374     <target name="init-dist" >
375
376         <!-- Package is not called first if packaging src standalone, so the dist.dir may not exist -->
377         <mkdir dir="${build.dir}"/>
378         <mkdir dir="${dist.dir}"/>
379         <mkdir dir="${maven.dist.dir}"/>
380     </target>
381
382   <!-- ================================================================== -->
383   <!-- Packages the sources from "svn export" with tar-gzip               -->
384   <!-- ================================================================== -->
385   <target name="package-tgz-src" depends="init, init-dist"
386           description="--> Generates the Lucene source distribution from 'svn export' as .tgz">
387     <property name="source.package.file"
388               value="${dist.dir}/lucene-${version}-src.tgz"/>
389     <delete file="${source.package.file}"/>
390     <svn-export-source source.dir="."/>
391     <build-changes changes.src.dir="${svn.export.dir}/src/site/changes"
392                    changes.target.dir="${svn.export.dir}/docs/changes"/>
393     <tar tarfile="${source.package.file}" compression="gzip" longfile="gnu">
394       <tarfileset prefix="lucene-${version}" dir="${svn.export.dir}"/>
395     </tar>
396     <make-checksums file="${source.package.file}"/>
397   </target>
398
399   <!-- ================================================================== -->
400   <!-- Packages the sources from local working copy with tar-gzip     -->
401   <!-- ================================================================== -->
402   <target name="package-local-src-tgz" depends="init"
403     description="--> Packages the Lucene source from the local working copy">
404     <mkdir dir="${common.dir}/build"/>
405     <property name="source.package.file"
406               value="${common.dir}/build/lucene-${version}-src.tgz"/>
407     <delete file="${source.package.file}"/>
408     <tar tarfile="${source.package.file}" compression="gzip" longfile="gnu">
409       <tarfileset prefix="lucene-${version}" dir=".">
410         <patternset refid="lucene.local.src.package.patterns"/>
411       </tarfileset>
412     </tar>
413   </target>
414
415   <!-- ================================================================== -->
416   <!-- same as package-tgz-src. it is just here for compatibility.        -->
417   <!-- ================================================================== -->
418   <target name="dist-src" depends="package-tgz-src"/>
419
420   <target name="dist-all" depends="dist, dist-src"/>
421
422   <target name="copy-to-stage">
423     <copy-to-stage-macro artifacts.dir="${dist.dir}"/>
424   </target>
425
426   <target name="prepare-release" depends="clean, dist-all, generate-maven-artifacts, sign-artifacts"/>
427
428   <target name="stage" depends="prepare-release, copy-to-stage"/>
429
430   <target name="generate-maven-artifacts"
431           depends="package, jar-src, jar-test-framework-src, javadocs">
432     <taskdef resource="org/apache/maven/artifact/ant/antlib.xml" 
433              uri="antlib:org.apache.maven.artifact.ant" 
434              classpathref="maven-ant-tasks.classpath"/>
435     <sequential>
436       <ant target="get-maven-poms" dir=".."/>
437
438       <m2-deploy pom.xml="../pom.xml"/> <!-- Lucene/Solr grandparent POM -->
439       <m2-deploy pom.xml="pom.xml"/>    <!-- Lucene parent POM -->
440       <m2-deploy pom.xml="src/pom.xml"> <!-- Lucene core POM -->
441         <artifact-attachments>
442           <attach file="${build.dir}/${final.name}-src.jar"
443                   classifier="sources"/>
444           <attach file="${build.dir}/${final.name}-javadoc.jar"
445                   classifier="javadoc"/>
446         </artifact-attachments>
447       </m2-deploy>
448       <m2-deploy pom.xml="src/test-framework/pom.xml"
449                  jar.file="${build.dir}/lucene-test-framework-${version}.jar">
450         <artifact-attachments>
451           <attach file="${build.dir}/lucene-test-framework-${version}-src.jar"
452                   classifier="sources"/>
453           <attach file="${build.dir}/lucene-test-framework-${version}-javadoc.jar"
454                   classifier="javadoc"/>
455         </artifact-attachments>
456       </m2-deploy>
457
458       <contrib-crawl target="dist-maven"/>
459     </sequential>
460   </target>
461         
462   <!-- ================================================================== -->
463   <!-- support for signing the artifacts using gpg                        -->
464   <!-- ================================================================== -->
465   <target name="sign-artifacts">
466     <sign-artifacts-macro artifacts.dir="${dist.dir}"/>
467   </target>
468
469   <!-- ================================================================== -->
470   <!-- Build the JavaCC files into the source tree                        -->
471   <!-- ================================================================== -->
472   <target name="clean-javacc">
473     <delete>
474       <fileset dir="src/java/org/apache/lucene/queryParser" includes="*.java">
475         <containsregexp expression="Generated.*By.*JavaCC"/>
476       </fileset>
477       <fileset dir="contrib/queryparser/src/java/org/apache/lucene/queryParser/surround/parser" includes="*.java">
478         <containsregexp expression="Generated.*By.*JavaCC"/>
479       </fileset>
480       <fileset dir="contrib/queryparser/src/java/org/apache/lucene/queryParser/standard/parser" includes="*.java">
481         <containsregexp expression="Generated.*By.*JavaCC"/>
482       </fileset>
483     </delete>
484   </target>
485
486   <target name="javacc" depends="init,javacc-check,clean-javacc,javacc-QueryParser,javacc-contrib-queryparser,javacc-contrib-demo"/>
487
488   <target name="javacc-QueryParser" depends="init,javacc-check" if="javacc.present">
489     <sequential>
490       <invoke-javacc target="src/java/org/apache/lucene/queryParser/QueryParser.jj"
491                      outputDir="src/java/org/apache/lucene/queryParser"/>
492
493       <!-- Change the inccorrect public ctors for QueryParser to be protected instead -->
494       <replaceregexp file="src/java/org/apache/lucene/queryParser/QueryParser.java"
495                      byline="true"
496                      match="public QueryParser\(CharStream "
497                      replace="protected QueryParser(CharStream "/>
498       <replaceregexp file="src/java/org/apache/lucene/queryParser/QueryParser.java"
499                      byline="true"
500                      match="public QueryParser\(QueryParserTokenManager "
501                      replace="protected QueryParser(QueryParserTokenManager "/>
502
503     </sequential>
504   </target>     
505
506   <target name="javacc-contrib-queryparser" depends="init,javacc-check" if="javacc.present">
507     <ant target="javacc"
508       dir="contrib/queryparser"
509       antfile="build.xml" 
510     />
511   </target>
512
513   <target name="javacc-contrib-demo" depends="init,javacc-check" if="javacc.present">
514     <ant target="javacc"
515       dir="contrib/demo"
516       antfile="build.xml"
517     />
518   </target>
519
520   <!-- ================================================================== -->
521   <!-- Build the JFlex files into the source tree                         -->
522   <!-- ================================================================== -->
523
524   <target name="jflex" depends="jflex-check,clean-jflex,gen-uax29-supp-macros,
525                                 jflex-StandardAnalyzer,jflex-UAX29URLEmailTokenizer"/>
526
527   <target name="gen-uax29-supp-macros">
528     <subant target="gen-uax29-supp-macros">
529        <fileset dir="contrib/icu" includes="build.xml"/>
530     </subant>
531   </target>
532
533   <target name="jflex-StandardAnalyzer" depends="init,jflex-check" if="jflex.present">
534     <taskdef classname="jflex.anttask.JFlexTask" name="jflex">
535                         <classpath refid="jflex.classpath"/>
536     </taskdef>
537
538     <jflex file="src/java/org/apache/lucene/analysis/standard/StandardTokenizerImpl.jflex"
539            outdir="src/java/org/apache/lucene/analysis/standard"
540            nobak="on" />
541     <jflex file="src/java/org/apache/lucene/analysis/standard/ClassicTokenizerImpl.jflex"
542            outdir="src/java/org/apache/lucene/analysis/standard"
543            nobak="on" />
544     <jflex file="src/java/org/apache/lucene/analysis/standard/std31/StandardTokenizerImpl31.jflex"
545            outdir="src/java/org/apache/lucene/analysis/standard/std31"
546            nobak="on" />
547   </target>
548
549   <target name="jflex-UAX29URLEmailTokenizer" depends="jflex-check" if="jflex.present">
550     <taskdef classname="jflex.anttask.JFlexTask" name="jflex">
551                         <classpath refid="jflex.classpath"/>
552     </taskdef>
553     <jflex file="src/java/org/apache/lucene/analysis/standard/UAX29URLEmailTokenizerImpl.jflex"
554            outdir="src/java/org/apache/lucene/analysis/standard"
555            nobak="on" />
556     <jflex file="src/java/org/apache/lucene/analysis/standard/std31/UAX29URLEmailTokenizerImpl31.jflex"
557            outdir="src/java/org/apache/lucene/analysis/standard/std31"
558            nobak="on" />
559   </target>
560
561   <property name="tld.zones" value="http://www.internic.net/zones/root.zone"/>
562   <property name="tld.output" location="src/java/org/apache/lucene/analysis/standard/ASCIITLD.jflex-macro"/>
563
564   <target name="gen-tlds" depends="compile-tools">
565     <java
566       classname="org.apache.lucene.analysis.standard.GenerateJflexTLDMacros"
567       dir="."
568       fork="true"
569       failonerror="true">
570       <classpath>
571         <pathelement location="${build.dir}/classes/tools"/>
572       </classpath>
573       <arg value="${tld.zones}"/>
574       <arg value="${tld.output}"/>
575     </java>
576   </target>
577
578   <target name="clean-jflex">
579     <delete>
580       <fileset dir="src/java/org/apache/lucene/analysis/standard" includes="**/*.java">
581         <containsregexp expression="generated.*by.*JFlex"/>
582       </fileset>
583     </delete>
584   </target>
585
586   <target name="build-contrib" depends="compile-test"
587           description="Builds all contrib modules and their tests">
588     <contrib-crawl target="build-artifacts-and-tests"/>
589   </target>
590
591   <target name="test-contrib" depends="build-contrib">
592     <contrib-crawl target="test" failonerror="true"/>
593   </target>
594
595   <!--
596    compile changes.txt into an html file
597    -->
598   <macrodef name="build-changes">
599     <attribute name="changes.src.dir" default="${changes.src.dir}"/>
600     <attribute name="changes.target.dir" default="${changes.target.dir}"/>
601     <sequential>
602       <mkdir dir="@{changes.target.dir}"/>
603       <exec executable="perl" input="CHANGES.txt" output="@{changes.target.dir}/Changes.html"
604             failonerror="true" logError="true">
605         <arg value="@{changes.src.dir}/changes2html.pl"/>
606       </exec>
607       <exec executable="perl" input="contrib/CHANGES.txt" output="@{changes.target.dir}/Contrib-Changes.html"
608             failonerror="true" logError="true">
609         <arg value="@{changes.src.dir}/changes2html.pl"/>
610       </exec>
611       <copy todir="@{changes.target.dir}">
612         <fileset dir="@{changes.src.dir}" includes="*.css"/>
613       </copy>
614     </sequential>
615   </macrodef>
616
617   <target name="changes-to-html">
618     <build-changes changes.src.dir="${changes.src.dir}" changes.target.dir="${changes.target.dir}" />
619   </target>
620
621   <!--
622    Committer helpers
623    -->
624
625   <property name="patch.file" value="${basedir}/../patches/${patch.name}"/>
626   <!-- Apply a patch.  Assumes  patch can be applied in the basedir.
627   -Dpatch.name assumes the patch is located in ${basedir}/../patches/${patch.name}
628   -Dpatch.file means the patch can be located anywhere on the file system
629   -->
630   <target name="apply-patch" depends="clean" description="Apply a patch file.  Set -Dpatch.file, or -Dpatch.name when the patch is in the directory ../patches/">
631     <patch patchfile="${patch.file}" strip="0"/>
632   </target>
633
634   <target name="jar-test-framework" depends="compile-test-framework">
635     <jarify basedir="${build.dir}/classes/test-framework" destfile="${build.dir}/lucene-test-framework-${version}.jar"
636             title="Lucene Search Engine: Test Framework" />
637   </target>
638
639   <target name="javadocs-test-framework">
640         <sequential>
641       <mkdir dir="${javadoc.dir}/test-framework"/>
642       <invoke-javadoc
643           overview="src/test-framework/java/overview.html"
644           destdir="${javadoc.dir}/test-framework"
645           title="${Name} ${version} Test Framework API">
646         <sources>
647           <packageset dir="src/test-framework/java"/>
648           <link href=""/>
649         </sources>
650       </invoke-javadoc>
651       <jarify basedir="${javadoc.dir}/test-framework" destfile="${build.dir}/lucene-test-framework-${version}-javadoc.jar"
652                   title="Lucene Search Engine: Test Framework" />
653     </sequential>
654   </target>
655
656   <target name="jar-test-framework-src" depends="init">
657     <jarify basedir="${tests-framework.src.dir}" destfile="${build.dir}/lucene-test-framework-${version}-src.jar"
658             title="Lucene Search Engine: Test Framework">
659       <fileset dir="${tests-framework.src.dir}/../resources" erroronmissingdir="no"/>
660     </jarify>
661   </target>
662
663   <!-- Override common-build.xml definition to check for the jar already being up-to-date -->
664   <target name="jar-core" depends="check-lucene-core-uptodate,compile-core" unless="lucene-core.uptodate">
665     <jarify/>
666   </target>
667 </project>