<?xml version="1.0" encoding="UTF-8"?>
<!--***********************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 * 
 ***********************************************************-->


<project name="LuceneHelpWrapper" default="main">

    <property file="../../../ant.properties"/>
    <import file="${SRC_ROOT}/solenv/ant/aoo-ant.xml"/>

    <target name="init-project">

        <property name="jar.classpath" value="${external.lucene-core.jarclasspath} ${external.lucene-analyzers.jarclasspath}"/>
        <property name="jar.manifest" value="${SRC_ROOT}/xmlhelp/java/LuceneHelpWrapper/MANIFEST.MF"/>

        <path id="main.classpath">
            <pathelement location="${OUTDIR}/bin/juh.jar"/>
            <pathelement location="${OUTDIR}/bin/jurt.jar"/>
            <pathelement location="${OUTDIR}/bin/ridl.jar"/>
            <pathelement location="${OUTDIR}/bin/unoil.jar"/>
            <pathelement location="${external.lucene-core.path}"/>
            <pathelement location="${external.lucene-analyzers.path}"/>
            <pathelement location="${OUTDIR}/bin/help"/>
        </path>

    </target>


    <target name="import-helpindexer" extensionOf="pre-compile" depends="prepare">

        <copy todir="${main.build.dir}">
            <fileset dir="${OUTDIR}/bin/help" includes="**/*.class"/>
        </copy>

    </target>

</project>

